PHP PDO和mysql无法用字母选择id

时间:2014-02-21 09:03:06

标签: php mysql pdo

在phpMyAdmin中查询

SELECT id
FROM `column`
WHERE `id` = "RM3zc7e8"
LIMIT 1

按预期查找结果。但是在函数中使用PDO时

function checkID($sid) {
  try {
    $conn = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE, USER, PASSWORD);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   

    $stmt = $conn->prepare("SELECT id FROM column WHERE id = :sID");
    $stmt->execute(array('sID' => $sID ));
    $result = $stmt->fetch();

  } catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
  }

  return $result;
}

我无法让它返回任何东西。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

由于您的变量名称错误,因此无效。比较以下

function checkID($sid) {
                 ^

VS

$stmt->execute(array('sID' => $sID ));
                              ^

您的函数中没有名为$sID的变量,因此没有值绑定到您的语句。设为$sid

答案 1 :(得分:-1)

  

PHP PDO和mysql无法选择带字母的id

实际上他们可以。
你的代码没问题。
你的问题不是真正的问题,因为它是由测试中的一些错字或错误引起的。您第一次测试时可能没有数据 另一个答案是错误的,因为PDO双向工作。检查并查看。

实际上,如果PDO无法找到具有该名称的占位符,则会抛出错误。