私が構築している単純なフォーラムのDBにアクセスするために、次のPHPがあります。
$sql = "
SELECT
categories.cat_id,
categories.cat_name,
categories.cat_description
FROM
categories
WHERE
categories.cat_id = '" . mysql_real_escape_string($_GET['id']) ."'
";
$result = mysql_query($sql);
//If data is unable to be served...
if (!$result) {
echo 'Category could not be displayed! Please try again later' . mysql_error();
} else {
if(mysql_num_rows($result) == 0) {
//This is the error code being displayed
echo 'Category does not exist!';
}
}
DBのこのセクションのコードは次のとおりです。
CREATE TABLE categories(
cat_id INT(8) NOT NULL AUTO_INCREMENT,
cat_name VARCHAR(255) NOT NULL,
cat_description VARCHAR(255) NOT NULL,
UNIQUE INDEX
cat_name_unique (cat_name),
PRIMARY KEY(cat_id)
)
TYPE=INNODB;
問題:何らかの理由で、クエリがDBから行データを正しくプルしていないようですが、なぜそれが機能しないのか迷っています。そうは言っても、私は一般的にMySQLとSQLにも不慣れです。何が起こっているのかについて誰かが何か考えを持っていますか?簡単に言うと、MySQLクエリがPHPコードのデータにアクセスしないのはなぜですか?
どんな助けでも大歓迎です!
ありがとう!
アップデート:
SQLクエリを次のように変更した後:
categories.cat_id = " . mysql_real_escape_string($_GET['id']);
これで元の問題は解決しましたが、別の問題が浮き彫りになりました。
私は今エラーコードを受け取っています:
echo 'Category could not be displayed! Please try again later' . mysql_error();
SQL出力あり:
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '' at line 8
私は以前にこの問題に実際に遭遇しましたが、それを修正しようとして、私が投稿した元のコードを思いつきました。PHPファイル全体で同様のコードが機能しているため、DBコードで作成したエラーであると思われます。