0

多くのフィールドを MySQL データベースに挿入しようとしていますが、いくつかは失敗しているため、PHP スクリプトにコードを追加して、何が起こっているのかを追跡しようとしています。

mysql にフィールドが入力されているのを見ると、置換は機能しているように見えますが、次のエラーが発生します。

1064:SQL 構文にエラーがあります。1 行目の「1」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

//insert query
if (strlen($link_name)>0)
{
$query = mysql_query("REPLACE into jos_mt_links
(link_id, link_name, alias, link_desc, user_id, link_approved, metadesc, link_created, link_modified, website, price)
VALUES ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')");
echo $link_name . "has been inserted <br />";
print "SQL-Query: ".$query."<br>";

    if(mysql_query($query,$db))
   {
    echo "<center><font face='$fonts' size=2 color='$green'>";
    echo " OK !</font><br><br>\n";
   }
  else
   {
    echo "<center><font face='$fonts' size=3 color='$red'>";
    echo "Error<br><br>";
       echo mysql_errno() . ":" . mysql_error() . "</font><br>\n";
   }
4

1 に答える 1

1

SQLに問題はありません。$query通話の結果に割り当てていますmysql_query()

$query = mysql_query("REPLACE into jos_mt_links
    (link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
    link_created, link_modified, website, price)
    VALUES
    ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')");

mysql_query()trueまたはクエリfalseの結果として返されREPLACEますが、より重要なことは、実行しているSQLクエリではなく、結果を割り当てることです。

さらに、ここで:

if(mysql_query($query,$db))

の値を保持している同じ変数をmysql_query() 再度呼び出しています(クエリが機能していて、データベースが正常に更新されていると言ったため)。PHPはブール値を文字列として解釈し、MySQLにと呼ばれるクエリを実行するように指示します。これによりエラーが発生します。$querytruetrue'1'1

$queryif条件が適切に機能するように、代わりにこのように割り当てることを意図している可能性があります。

$query = "REPLACE into jos_mt_links
    (link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
    link_created, link_modified, website, price)
    VALUES
    ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')";

echoそして、ifステートメント内でもあなたを呼び出します。

もう1つのこと:Mark Ba​​kerが指摘しているように、変数をmysql_real_escape_string()SQLに直接貼り付ける前に、変数がエスケープされていることを確認してください。

于 2010-06-02T16:08:32.640 に答える