ホームページ >バックエンド開発 >PHPチュートリアル >致命的なエラー: 非オブジェクトに対するメンバー関数 fetch_array() の呼び出し
include_once ('conn.php');//error_reporting(0);@$shops_name= $_GET["shops_name"];if (isset($shops_name)) { echo $shops_name; $query = "SELECT * FROM goods WHERE ShopName= '$shops_name'"; @$q = $conn->query($query); while($row=$q->fetch_array()) { $select[]=array("goods_id"=>$row[ID],"goods_name"=>$row[Name]); } echo json_encode($select);}
conn.php を投稿
94926b12d312c817c773b80e63231039query("文字セット 'gbk'");
$conn->query("名前を設定 'gbk'"); 🎜>
$q = $conn->query($query);
echo $q = $conn->error;
$q = $conn-> query($query);
操作 '=
@$q = $conn->query($query);
が$q = $conn->query($query) または die($ conn-> ;error);
エラー出力を見てください。
SQL の実行に問題がある可能性があります。
@$q = $conn->query($query);
が
どのようなエラー出力があるかを確認します。
SQL の実行に問題がある可能性があります。
元のテーブルには
操作 '=' エラーの照合順序 (utf8_general_ci,IMPLICIT) と (gbk_chinese_ci,COERCIBLE) の不正な組み合わせがあります。
テーブル フィールドのエンコーディングが gbk に変更された後、$conn-error にはエラー出力がありませんが、致命的なエラーが依然として存在します: 非オブジェクトでのメンバー関数 fetch_array() の呼び出し。
その後、
echobase64_encode($query)
結果を投稿します (もちろん、エラー)
文字セットを変更してもコンテンツの文字セットは同時に変更されないため、データが含まれるテーブルの文字セットを任意に変更しないでください。
に戻してください。データが失われるのを避けるために、Yanlaide の文字セット設定を変更してください。
$query = "SELECT * FROM Goods WHERE ShopName= '$shops_name'";
その後、
echobase64_encode($query)
結果を投稿します (もちろん、エラー)
U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn
渡しているのは明らかに utf-8 でエンコードされたデータです
echo base64_decode('U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn');また、それを gbk エンコードとして扱います ($conn->query("set names 'gbk '" );) それは間違いではないでしょうか?