0

これが私のコードです。

<?php

$a = bacon;
$b = 20;
$c = 30;

$link = mysql_connect('localhost','root',''); 
mysql_select_db("test", $link);

$sql = "UPDATE share SET price=".
         PrepSQL($b) . ", place=" .
         PrepSQL($c) . ", time=CURRENT_TIMESTAMP where num=1 and RID=(select IID from ingredient where Ingredient='" . PrepSQL($a) . "')";

mysql_query($sql);

function PrepSQL($value)
{
    // Stripslashes
    if(get_magic_quotes_gpc())
    {
        $value = stripslashes($value);
    }

    // Quote
    $value = "'" . mysql_real_escape_string($value) . "'";

    return($value);
}
?>

上記のコードではDBテーブルを更新できないことがわかりました。しかし、where条件をwhere num =1およびRID=(Ingredient = 'bacon'の成分からIIDを選択)"に変更すると、すべてが正常に機能します。コードに問題がありますか?どうもありがとうございました。

4

3 に答える 3

0

文字列であると想定される場合は、引用符で囲む必要があります。

$a = 'bacon';
于 2013-03-20T09:24:43.560 に答える
0

あなたが使用する必要があります:

<?php

$a = "bacon";
$b = 20;
$c = 30;

$link = mysql_connect('localhost','root',''); 
mysql_select_db("test", $link);

$sql = "UPDATE share SET price=".
         PrepSQL($b) . ", place=" .
         PrepSQL($c) . ", time=CURRENT_TIMESTAMP where num=1 and RID=(select IID from ingredient where Ingredient='" . PrepSQL($a) . "')";

mysql_query($sql);

function PrepSQL($value)
{
    // Stripslashes
    if(get_magic_quotes_gpc())
    {
        $value = stripslashes($value);
    }

    // Quote
    $value = "'" . mysql_real_escape_string($value) . "'";

    return($value);
}
?>
于 2013-03-20T09:25:45.010 に答える
0

サブクエリ

"[...] (select IID from ingredient where Ingredient='" . PrepSQL($a) . "')"

本当にする必要があります

"[...] (select IID from ingredient where Ingredient=" . PrepSQL($a) . ")"

toを呼び出すと、PrepSQLすでに一重引用符が追加されているためです。

また、mysql_*php関数は廃止されたため、使用しないでください。その他のオプションについては、http ://www.php.net/manual/en/mysqlinfo.api.choosing.phpを参照してください。

編集:

また、おそらく未定義のbacon定数がありますが、"bacon"代わりにそうする必要があります。

于 2013-03-20T09:26:07.353 に答える