1

重複の可能性:
MySQL の挿入ステートメント内に PHP 変数を含める方法

Wordpress カテゴリのカテゴリ ID をその名前で選択したいと考えています。奇妙なことに、カテゴリを手動で定義すると、すべてが完全に機能します。

echo コマンドはカテゴリ名を提供し、最後に変数 $catid でカテゴリ ID を取得します。

ただし、フォームを介して送信すると、手動で定義した場合とまったく同じカテゴリ名が echo コマンドによって返されますが、MySQL コマンドは機能せず、$catid 変数が空のままになります。

直接定義すると機能するのに、まったく同じ文字列がフォームから投稿された場​​合には機能しない理由を理解できないので、ここに誰か考えがありますか。以下のコード例は、$category 変数がフォームを介して渡される私のコードの一部です。manual 変数のコメントを外し、post 変数のコメントを外すと、すべて機能します。

// $category = "Manual"; // manually defined

$category = $_POST['category']; //defined through a form

echo $category;

$connect = mysql_connect(localhost,abc,def); 

if (!$connect) {
    die('Could not connect: '.mysql_error());
}

mysql_select_db("abc");
$queryresult = mysql_query("SELECT * FROM `wp_terms` WHERE `name`='$category' LIMIT 0,1");

while($row = mysql_fetch_array( $queryresult )) {
     $catid = $row[term_id];
}
4

1 に答える 1

0

次のように、投稿データの内容を確認することをお勧めします。

print_r($_POST); die;

これにより、変数が送信に存在するかどうかを確認できます。私の賭けは、あなたがそれを渡していないか、別の名前で送信されていることです (タイプミスの可能性もあります)。

フォームと処理コードなしでこの質問に答えるのは難しいですが、変数の内容を画面にダンプすることで、少なくともデータのバグを解消することができます。

お役に立てれば。

PS: これはリソースを浪費しています:

echo "$category";

これを使用できます:

echo $category;

PPS: SQL インジェクションを防ぐために変数を消去することをお勧めします。このコードは非常に危険です。

$category = $_POST['category'];
mysql_query("SELECT * FROM `wp_terms` WHERE `name`='$category' LIMIT 0 , 1");

変数が PPOST から正しく渡されている場合は、次のように SQL クエリをデバッグしてみてください。

$query = sprintf("SELECT * FROM wp_terms WHERE name='%s' LIMIT 0,1", $category);
print_r($query); die;

次に、データベースを実行するためのインターフェースがある場合は、クエリを投げて、エラーと結果をチェックしてみてください(検索ステートメントを確認するためだけに)。

これが正常に機能する場合は、それが SQL 接続ステートメントに関係していることは確かであり、PHP バージョンを見つけて $connect の値をダンプする必要があります。このコードを共有ホスティング環境または独自のプライベート サーバーで実行していますか?

于 2013-01-06T14:51:48.103 に答える