0

我只在 mysql 用户上设置了 SELECT 权限

然后,当我运行UPDATE ...查询

$sth = $db->prepare( $update_sql );

if (!$sth) {
    echo "fail";
}
else {
    echo "Ok";
}

打印Ok,但在表中没有更新。

问题:为什么打印Ok而不是打印fail

4

2 回答 2

3

您可能需要execute您准备的查询:

$sth->execute();

准备好的语句本身不对数据库做任何事情。该文档提供了更多细节。

请记住,exceute调用是您可以绑定SQL 占位符值的时间。

于 2013-04-09T16:34:18.027 回答
1

...因为您没有执行该语句 - 您只是准备了它。

function try_to_run($sql, $db)
{
   $sth = $db->prepare( $update_sql );
   if (false===$sth) return false;
   $r=$sth->execute();
   return $r;
}

if (false===try_to_run($sql, $db)) {
   echo "fail";
} else {
   echo "Ok";
}
于 2013-04-09T16:37:38.427 回答