ホームページ  >  記事  >  バックエンド開発  >  データベースクエリにおける不可解な質問と詳細な説明

データベースクエリにおける不可解な質問と詳細な説明

WBOY
WBOYオリジナル
2016-06-13 13:14:43934ブラウズ

データベースクエリの難解な問題を詳しく解説!
ソース コード:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$sql="select * from tb_user where nicheng='".$uname."'";
$re=mysql_query($sql,$conn);
//echo $sql;
//exit();
$info=mysql_fetch_array($re);
if($info==true)
 {
   echo "<script>alert('该昵称已经存在!');history.back();</script>";
   exit;
 }

テスト時には常にエラーが発生し、プロンプト:
警告: mysql_fetch_array(): 指定された引数は有効な MySQL 結果ではありません (エラーは " $info=mysql_fetch_array($re);" にあります

SQL ステートメントにはエラーはなく、エコー出力を使用して mysql で実行されました! 条件を設定したときにもそれがわかりました値が数値であるフィールド (例: "where id='".$uname."'";" または "where id='".$uname."'";") への関数は、値が次の場合に正常に実行されます。条件フィールドが中国語 (niche、xingming、xingbie など) の場合、実行時に上記のエラーが報告されます。
エンコードの問題だと思いますが、echo 出力を使用したところ、中国語の表示は正常です。

データベースは次のとおりです:
id xingming xingbie biji ruxue banji mima ip shijian nicheng
1 張三南中学校 2011 05 2134 NULL NULL 小三


構造は次のとおりです:
id int(11) いいえ auto_increment
xingming varchar(8) utf8_bin は NULL
xingbie varchar(2) gb2312_chinese_ci は NULL
buji varchar(4) gb2312_chinese_ci は NULL
ruxue varchar(4) gb2312_chinese_ci is NULL
banji varchar(2) gb2312_chinese_ci is NULL
mima varchar(50) gb2312_chinese_ci is NULL
ip varchar(15) gb2312_chinese_ci is NULL
shijian datetime is NULL
nicheng varchar(25) utf8_bin いいえ


-----解決策---------
エコーしてもらえますか$uname の値を確認するには?
------解決策---------
ページのエンコーディングは何ですか?
------解決策------------------
投稿者はニックネームの重複を判断する必要があります。
代わりにこれを試してみましょう

$sql="select * from tb_user where nicheng='".$uname."'";
$result=mysql_query($sql);
if (mysql_num_rows($result)>0){
echo "ニックネームはすでに存在します";
}
else {
//データを挿入
}

エンコーディングの問題だと考えられます。リンクされたデータベースに同様のステートメントがあるかどうかを確認してください
mysql_query('set names utf8');
------解決策------------------
$re=mysql_query($sql,$conn) または die(mysql_error()); // このように報告されるエラーは何ですか?
------解決策----------------------
データベースはどのようなエンコーディングを使用していますか?
次の文を追加してみてください
mysql_set_charset("データベースで使用されるエンコーディング");
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。