PHP PDO,绑定不起作用

时间:2014-06-27 21:06:43

标签: php binding pdo

对此非常陌生。我的连接工作正常,我能够从我的数据库等插入/选择/删除,但一旦我开始尝试使其安全,使用绑定,它只是什么都不做。整个下午,我一直在假设它只是语法,我仍然习惯,但我已经尝试了一切,并经历了无数的教程。一切正常,直到我开始绑定。当我运行下面的代码时,没有任何反应。运行它并检查我的数据库后,没有插入。

这是我现在的代码......我已经将它剥离到了基础。这不应该工作吗?还有什么可能是错的?我开始认为我的服务器或其他东西出了问题。

<?php
//connection is working before this
$query = $db->prepare("INSERT INTO Players (Name) VALUES (:name)");
$query->bindParam(':name', 'John Smith');
$query->execute();
?>

以防万一,这是我的连接例程......

try {
    $db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8',
        'xx', 'xxx', array(
            PDO::ATTR_EMULATE_PREPARES => false, 
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
         ));
    echo "Connected";
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

连接没有问题。

1 个答案:

答案 0 :(得分:0)

对于bindValue(),第一个参数需要是值的标识符,在您的情况下它将是':name'。第二个参数是被绑定的值,它很可能是传递给你的方法的变量所以它是$ name,看看这里

    $dbHandler = self::getHandler();
    // Prepare the Query:
    $stmtHandler= $dbHandler->prepare("INSERT INTO Players (Name) VALUES (:name)");
    // Bind the value:
    $stmtHandler->bindValue(':name', $name);
    // Execute the Query:
    $stmtHandler->execute();

php.net可能会更好地为您解释HERE

希望它对你有所帮助。