0

我正在尝试更新两列而不删除整行。这是我正在使用的:

$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 转义引号。你可以通过两种方式做到这一点。

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 回答