【问题标题】:PHP -> PDO Update StatementPHP -> PDO 更新语句
【发布时间】:2011-09-21 18:58:27
【问题描述】:

我正在尝试执行 SQL 查询 (insert into users set cash = cash + 20), 谁能帮我处理上述查询的 PDO 准备语句版本?

【问题讨论】:

  • 这不是一个有效的插入语句。这应该是 insert into users set cash = 20 。您在寻找更新声明吗?
  • @Francois:哦!真的。查看 INSERT dev.mysql.com/doc/refman/5.5/en/insert.html 的第二个语法
  • @Shakti Singh - 我欠你一个道歉。你完全正确。我不知道你能做到这一点。
  • @Shakti Singh - 我正在考虑更多关于这个问题,@junjie 没有具体说明他正在使用哪个数据库服务器。你说得对,SET cash = 20 在 MySQL 中有效,但在其他情况下,它不一定有效。例如,PostgreSQL 不允许这样做。由于 PDO 的名称,最好不要使用SET cash = 20,因为它不是标准。
  • @Francois:标准是什么意思?你的意思是DATABASE Sever支持的东西那么这是一个标准的INSERT声明,根据一项调查95%用户正在使用PHPmysql。可能该用户不在那个95% 中,但他更有可能在那个95% 中。

标签: php sql pdo sql-update


【解决方案1】:

我真的不知道您是要插入还是更新。以下是 PDO 准备好的语句示例。他们假设您已经连接并且 PDO 对象是$dbh

插入:

$sth = $dbh->prepare('INSERT INTO `users` (`cash`) VALUES (?)');
$sth->execute(array(20));

更新:

// All users
$sth = $dbh->prepare('UPDATE `users` SET `cash` = `cash` + ?');
$sth->execute(array(20));

// A specific user (assuming that there's a field name "id")
$sth = $dbh->prepare('UPDATE `users` SET `cash` = `cash` + ? WHERE `id` = ?');
$sth->execute(array(20, $id));

【讨论】:

    【解决方案2】:

    您正在尝试进行更新,而不是插入

     UPDATE users SET cash = (cash + 20)
     WHERE <condition>
    

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 2023-03-03
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      相关资源
      最近更新 更多