ホームページ >バックエンド開発 >PHPチュートリアル >致命的なエラー: 非オブジェクトに対するメンバー関数 fetch_array() の呼び出し

致命的なエラー: 非オブジェクトに対するメンバー関数 fetch_array() の呼び出し

WBOY
WBOYオリジナル
2016-06-20 12:49:342043ブラウズ

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);}


@query を mysql クエリに正常にコピーしました。しかし、ここで失敗しました、解決してください。


ディスカッション (解決策) に返信

conn.php を投稿

94926b12d312c817c773b80e63231039query("文字セット 'gbk'");
$conn->query("名前を設定 'gbk'"); 🎜>
$q = $conn->query($query);
echo $q = $conn->error;


$q = $conn-> query($query);

echo $q = $conn->error;


操作 '=

それはどういう意味ですか? ?

テーブル フィールドのエンコーディングを変更した後、操作 '= に対して照合順序 (utf8_general_ci,IMPLICIT) と (gbk_chinese_ci,COERCIBLE) が不正に混在することはありませんが、致命的なエラー: メンバー関数 fetch_array() の呼び出しが依然として発生します。非オブジェクト

@$q = $conn->query($query);

$q = $conn->query($query) または die($ conn-> ;error);

エラー出力を見てください。

SQL の実行に問題がある可能性があります。


@$q = $conn->query($query);

$q = $conn->query($query) または die($conn) に変更されました->error);

どのようなエラー出力があるかを確認します。

SQL の実行に問題がある可能性があります。

元のテーブルには
操作 '=' エラーの照合順序 (utf8_general_ci,IMPLICIT) と (gbk_chinese_ci,COERCIBLE) の不正な組み合わせがあります。
テーブル フィールドのエンコーディングが gbk に変更された後、$conn-error にはエラー出力がありませんが、致命的なエラーが依然として存在します: 非オブジェクトでのメンバー関数 fetch_array() の呼び出し。


データが含まれるテーブルの文字セットを任意に変更しないでください。文字セットを変更しても、コンテンツの文字セットは同時に変更されません。
ソルトされた文字セット設定に戻してください。データの損失を避けてください!
$query = "SELECT * FROM Goods WHERE ShopName= '$shops_name'";

その後、
echobase64_encode($query)
結果を投稿します (もちろん、エラー)


文字セットを変更してもコンテンツの文字セットは同時に変更されないため、データが含まれるテーブルの文字セットを任意に変更しないでください。
に戻してください。データが失われるのを避けるために、Yanlaide の文字セット設定を変更してください。

$query = "SELECT * FROM Goods WHERE ShopName= '$shops_name'";

その後、
echobase64_encode($query)
結果を投稿します (もちろん、エラー)

U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn



gbk 環境: SELECT * FROM 商品 WHERE ShopName= '搴?1' In -8環境: SELECT * FROM Goods WHERE ShopName= 'Shop 1'

渡しているのは明らかに utf-8 でエンコードされたデータです

echo base64_decode('U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn');
また、それを gbk エンコードとして扱います ($conn->query("set names 'gbk '" );) それは間違いではないでしょうか?


ああ、結局のところ、私はコーディングをあまりよく理解していなかったことがわかりました。
わかりました。問題は解決しました。モデレータ、ありがとう。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。