function fetch($query='', $type = 'BOTH') { $result_type="PDO::FETCH_".$type; $query->setFetchMode($result_type);//這報錯,$query是pdo的query結果 $result_arr=$query->fetch(); return $result_arr;}
PDOStatement::setFetchMode(): SQLSTATE[HY000]: General error: mode must be an integer
這個是什麼問題?本地測試沒問題,放空間報錯
回複內容:
function fetch($query='', $type = 'BOTH') { $result_type="PDO::FETCH_".$type; $query->setFetchMode($result_type);//這報錯,$query是pdo的query結果 $result_arr=$query->fetch(); return $result_arr;}
PDOStatement::setFetchMode(): SQLSTATE[HY000]: General error: mode must be an integer
這個是什麼問題?本地測試沒問題,放空間報錯
no code, no truth.
你得把代碼和資料庫從你的項目中抽出來並盡量簡化,以便於其它人在自己的電腦上重現你遇到的問題,再來分析。
PDO擴充在Windows環境和Linux環境的行為不相同,有的代碼在Windows環境是不報錯的(warning、notice全開啟也不報),但在linux環境就會報錯的,我7年前遇到過。
改一行代碼:
$query->setFetchMode(constant($result_type));
PDOStatement::setFetchMode方法必須傳入第一個int型的mode參數啊,你肯定沒傳或者傳的不是int型的。至於本地測試沒報錯,可能是service的錯誤輸出層級跟空間的不一樣。
PDOStatement::setFetchMode ( int $mode );//mode//The fetch mode must be one of the PDO::FETCH_* constants.
一個更好的方法,有圖有真相:
你理解錯文檔的意思了,那是要你填一個PDO的常量,不是字串。