2

さて、私は再びウェブサイトをやっていて、行の値を編集または更新したいので、phpmyadminに行き、値を更新するためのコードが何であるかを確認したので、これがあります:

UPDATE `database`.`table` SET `title` = 'My Title', `message` = 'My Message' WHERE  `table`.`id` =2 LIMIT 1 ;

そこで、PHP で次のように言い換えてみました。

mysql_query("UPDATE posts SET title = '$title', message = '$message' WHERE id='$id' LIMIT 1");

しかし、テーブルを確認しようとすると、変わりません。

ちなみにエラー表示はありません。

4

7 に答える 7

2

試す:

mysql_query("UPDATE posts SET title = '" . $title . "' message = '" . $message . "' WHERE id =2 LIMIT 1");

どのバージョンの PHP を使用していますか?

于 2012-05-26T09:01:41.133 に答える
2

これがうまくいくことを願っています

mysql_query("UPDATE posts SET title = '{$title}', message = '{$message}' WHERE id={$id} LIMIT 1");
于 2012-05-26T09:21:57.723 に答える
1

私はこれを使用しました:

mysql_query('UPDATE posts SET title ="'。$title。'"、message="'。$message。'"WHEREid='。$id。'LIMIT1');

于 2012-05-26T09:25:53.197 に答える
1

SQLインジェクションがあります。これは、メッセージ内の単一引用符がクエリを壊すことを意味します。クエリに渡す変数は、ユーザー入力からのものであるか、データベースから取得されたものであるか、ハードコードされた値であるかに関係なく、適切にエスケープする必要があります。あなたの場合、mysql *ファミリーの関数を使用しているので、mysql_real_escape_stringが必要です。mysqliしかし、 (これは本当に単純なプロセスです)またはに移行してPDO、を使用することで、あなたに有利に働くことができますPrepared statements。プリペアドステートメントを使用している場合は、エスケープを忘れて、変数をクエリのプレースホルダーに直接バインドできます。

于 2012-05-26T09:30:04.837 に答える
1

おそらく変数に引用符が含まれているため、エラーが発生します。

あなたには2つの解決策があります:

  1. 次の構文を使用します。mysql_query( "UPDATE posts SET title ='"。$title。"'、message='"。$message。"'WHEREid ='$ id' LIMIT 1");

  2. または、sqlコマンドに送信される各変数に標準のphp関数'mysql_real_scape_string()'を使用することをお勧めします。これにより、許可されない各文字の前に円記号が付き、問題は発生しません。

于 2012-05-26T09:54:11.973 に答える
1

試す

mysql_query("UPDATE posts SET title = '$title', message = '$message' WHERE id=$id");

またはSQLインジェクションを防ぐために

mysql_query(sprintf("UPDATE posts SET title = '%s', message = '%s' WHERE id=%s LIMIT 1", mysql_real_escape_string($title), mysql_real_escape_string($message), mysql_real_escape_string($id)));

于 2012-05-26T09:21:36.623 に答える
0

jQuery またはスクリプトで参照するための正しい テキスト ボックス名 を使用していません

修正してください

于 2012-10-24T04:10:07.037 に答える