使用绑定(bind)参数的 PHP SQL 语法错误

标签 php mysql pdo

首先,我使用 MySQL POO API,有一个重要的部分:

public function query($query,$params = null,$fetchmode = PDO::FETCH_ASSOC)
{
    $query = trim($query);

    $this->Init($query,$params);

    if (stripos($query, 'select') === 0){
        return $this->sQuery->fetchAll($fetchmode);
    }
    elseif (stripos($query, 'insert') === 0 ||  stripos($query, 'update') === 0 || stripos($query, 'delete') === 0) {
        return $this->sQuery->rowCount();   
    }   
    else {
        return NULL;
    }
}

_

This API has a loging and showing Class to save and show the SQL error, there is my error :
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 firstname = ? AND age = ? ?' at line 1
Raw SQL : SELECT * FROM users WHERE id = :iduser

之后我发现其中包含SQL,有函数和使用该函数的代码:

function get_member_informations($id)
{
  global $bdd;

  $dn = $bdd->query("SELECT * FROM users WHERE id = :iduser", array("iduser" => $id));
  $dn[0]['avatar'] = base64_decode($dn[0]['avatar']);
  return $dn;
}

以及使用这个函数的代码:

$profil = $bdd->query("SELECT * FROM users WHERE username = :username", array("username"=>$username));
$id = $profil[0]['id'];
$profile = get_member_informations($id);

我知道这是一个 mysql 和 php 问题,所以为了检查它是否不是 $id 导致错误的原因,我在上面做了一个 print_r 但一切都正常。 我不知道如何解决这个问题,任何帮助将不胜感激

最佳答案

我是第二位致力于此的开发人员。 经过检查,类(class)报告了错误的原始 SQL,我已经修复了这个问题,经过检查,这是一个:

FROM :table
"table"=> $this->table

已更正,谢谢大家,抱歉给您带来不便。 @dleiftah ==> 感谢您的精彩回答;)

关于使用绑定(bind)参数的 PHP SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19816838/

相关文章:

php - 需要帮助将数据写入多客户端 Web 应用程序中的文件?

php - 不同主机上的不同 file_get_contents() 结果

php - IE 查询参数中的 UTF-8 编码问题

php - 如何以 'reusable' 的方式将参数传递给数组中的 PDO SELECT 语句?

PHP异常: SQLSTATE[42000]: Syntax error or access violation: 1064

php - 使用 PHP PDO 扩展删除 MySQL 数据库中的多行

php - MySQL SELECT 执行时间太长

mysql - 重新映射 MYSQL 中的行

mysql - Vagrant:打开与主机的 mysql 连接

php - 通过php动态设置mysql中的join类型