【发布时间】: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() 获取错误信息?如果有,上面写的是什么?