【问题标题】:Whats wrong with this Mysql PDO execution that makes it not execute?这个 Mysql PDO 执行有什么问题导致它无法执行?
【发布时间】:2012-01-09 00:23:03
【问题描述】:

这个查询没有执行,我确信它会检查代码,它只是没有更新行。

$statement = $db->prepare("UPDATE users SET data=:data WHERE id=:id");
$statement->execute(array(':data' => $data, ':id' =>     $_REQUEST['user_id']));

可能是什么问题?我 100% 认为 $_REQUEST['user_id'] 是有效的并且存在于数据库中,并且该数据也包含一些内容。我真的不知道为什么它不会执行。

【问题讨论】:

  • 我们怎么知道它为什么不执行?通常您会收到一条错误消息,如果没有,则检查您传递给execute 函数的参数。你有$data 并且你有$_REQUEST['user_id'] 被通过。除非您验证您的断言是正确的,否则说您确定某事是有效的是没有意义的——即两个变量都已设置。
  • 我已经验证了两者都包含带有 isset 的东西,我的意思是说实话,我和你一样一无所知。没有给出错误,它只是跳过了这段代码,就像什么都没有!真的很奇怪。我的意思是,在脚本的顶部,我使用完全相同的代码,但在“SELECT”中接收用户数据,它确认有效:
  • @N.B. $query = $db->prepare("SELECT * FROM users WHERE id=?"); $query->execute(array($_REQUEST['user_id']));
  • 您是否尝试过通过 $statement->errorInfo() 获取错误信息?如果有,上面写的是什么?

标签: php mysql pdo execution


【解决方案1】:

先试试binding你的参数:

$statement = $db->prepare("UPDATE users SET data=:data WHERE id=:id");

$statement->bindValue(':data', $data, PDO::PARAM_STR);
$statement->bindValue(':id',  $_REQUEST['user_id'], PDO::PARAM_INT);

$statement->execute();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2018-10-07
    相关资源
    最近更新 更多