0

行全体を削除せずに2つの列を更新しようとしています。これが私が使っているものです:

$sql='update users set token='',timestamp='' where token=?';
   $stmt=$db_con->stmt_init();
   $stmt->prepare($sql_3);
   $stmt->bind_param('s',$token);
   $stmt->execute();

ただし、次のエラーが発生します:T_CONSTANT_ENCAPSED_STRING。これで、MySQL CLIを使用してクエリを使用すると、クエリが正常に機能するupdate users set token='',timestamp='' where token='blahblah';ようになりました。これを回避するにはどうすればよいですか。

4

3 に答える 3

2

これを使って

$sql="update users set token='',timestamp='' where token=?";

文字列をエスケープする方法については、こちらをご覧ください。
http://php.net/manual/en/language.types.string.php

于 2012-05-14T10:58:01.497 に答える
1

使用する必要があります。

$sql="update users set token='',timestamp='' where token=?";

文字列の最初と最後に二重引用符( ")があることに注意してください。

文字列で複数の一重引用符を使用しているため、PHPはこれを理解せず、エラーをスローします。引用をエスケープするようにphpに指示する必要があります。あなたは2つの方法でそれを行うことができます。

1)引用符の前にPHPの\エスケープ文字を使用する。

'update users set token=\'\',timestamp=\'\' where token=?';

2)文字列には一重引用符ではなく二重引用符を使用します。

"update users set token=\'\',timestamp=\'\' where token=?";

両方とも機能するはずです。

于 2012-05-14T10:57:35.817 に答える
0

ここで、クエリが一重引用符で囲まれていて、クエリ文字列で一重引用符を複数回使用したことをお知らせします。PHPは最初の引用符から次の引用符まで文字列を受け入れます。そのため、エラーが発生しますが、コマンドラインではエラーは生成されません。

$sql='update users set token='',timestamp='' where token=?'; to
$sql="update users set token='',timestamp='' where token=?";
于 2012-05-14T11:02:24.883 に答える