0

これは、男と女を得るのと同じくらい基本的です.

動作しない非常に単純なスクリプトがあります。データベースを呼び出して接続をテストし、クエリを実行して結果を保存し、結果を出力します。

問題は、SQL ステートメントで変数を使用できないように見えることです。

コードは次のとおりです。

<?php

    $rest_name = $_GET['rest_name']; // outputs 'Starbucks'

    $test = mysql_query("SELECT code_id FROM table_code WHERE restaurant = '$rest_name'");

    /* I've also tried these as well
    $test = mysql_query("SELECT code_id FROM table_code WHERE restaurant = '".$rest_name."'");
    */

    $mark = mysql_result($test,0);

    echo $_GET['rest_name'].$mark; 
?>

クエリをエコーし​​たところ、データベースで問題なく実行されました。$rest_name 変数は問題なくエコーします。$_GET['rest_name'] は問題なくエコーします。私はこれについて迷って混乱しています。

4

2 に答える 2

1

1 - これで始められます。

$test = mysql_query("S....") or die(mysql_error());

このようにして、どのようなエラーが発生しているかがわかります。

2 - ユーザーが提供する変数をクエリで使用したくない場合があります

$rest_name = mysql_real_escape_string($_GET['rest_name']); 

それ以外の場合、ユーザーは独自の SQL コマンドを挿入できます。

3 - mysql_xxx 関数は非推奨になりました。pdo または mysqli を調べて、新しいメソッドがどのように機能するかを確認することをお勧めします。

于 2012-07-25T18:51:01.920 に答える
0

msyql_queryによって返される有効な結果セットがあることを確認してください

$test = mysql_query("SELECT ... ");
if (!$test) {
    die(mysql_error());
}

(MySQLインスタンスに接続していない、間違ったデータベースにいる、接続しているユーザーに権限がないなどの可能性があります)

使用する前に、結果セットを確認してください。


注: mysql_関数は使用せず、代わりにmysqliまたはPDOを使用してください。

于 2012-07-25T19:06:14.893 に答える