对此非常陌生。我的连接工作正常,我能够从我的数据库等插入/选择/删除,但一旦我开始尝试使其安全,使用绑定,它只是什么都不做。整个下午,我一直在假设它只是语法,我仍然习惯,但我已经尝试了一切,并经历了无数的教程。一切正常,直到我开始绑定。当我运行下面的代码时,没有任何反应。运行它并检查我的数据库后,没有插入。
这是我现在的代码......我已经将它剥离到了基础。这不应该工作吗?还有什么可能是错的?我开始认为我的服务器或其他东西出了问题。
<?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();
}
连接没有问题。
答案 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
希望它对你有所帮助。