php - MySQL 错误 : 1064

标签 php mysql sql mysql-error-1064

我有以下 PHP 代码:

try{
    $stmt = $db->prepare('SELECT nume,prenume FROM candidati');
    $stmt->execute();
    while($row = $stmt->fetch(PDO::FETCH_OBJ)){
        $aux = $row->nume.' '.$row->prenume;
        $st = $db->prepare('SELECT COUNT(id) AS total FROM votanti WHERE consiliul_local=?');
        $st->execute(array($aux));
        while($r = $st->fetch(PDO::FETCH_OBJ)){
            $s = $db->prepare("INSERT INTO rezultate SET obtinute=:o WHERE nume=:n AND prenume=:p");
            $s->bindParam(':o',$r->total,PDO::PARAM_INT);
            $s->bindParam(':n',$row->nume,PDO::PARAM_STR);
            $s->bindParam(':p',$row->prenume,PDO::PARAM_STR);
            $s->execute();
        }
    }
} catch(PDOException $e){
    echo $e->getMessage();
}

还有下面的类:

class DB{
    public static function connect($engine,$host,$user,$pass,$name){
        try{
            $dbh = new PDO("$engine:host=$host;dbname=$name;charset=utf8",$user,$pass);
            $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
            return $dbh;
        } catch(PDOException $e){
            echo $e->getMessage();
        }
    }
}

但是当我执行第一段代码时,它发送了这个错误信息:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE nume=? AND prenume=?' at line 1

你能告诉我如何解决这个问题吗?谢谢!

最佳答案

INSERT 语句没有 WHERE 子句。您需要改用 UPDATE

$s = $db->prepare("UPDATE rezultate SET obtinute=:o WHERE nume=:n AND prenume=:p");

关于php - MySQL 错误 : 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101519/

相关文章:

php - 自定义 OAuth2 用户数据库

mysql - 仅选择最近的日期

Python - MySQL - 'http://www.......................' 中的未知列 'field list'

MySQL 到 MSSQL 查询转换

php - 当条件有多个且不同时如何更新单个表?

php - 在 Woocommerce 3 中删除订单项目后未保存重新计算的总计

PHP 性能

带连接条件的 MySql 查询

mysql - 每组选择一个特定行?

mysql - 使用哪种关系模型来存储依赖于其他值的值?