我已经想了一段时间了。没有这样的运气。在一个简单的表单提交上获得mysqlPDO访问冲突。用户名,通行证等都是正确的和功能。
<?
function testdb_connect ($hostname, $username, $password){
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
return $dbh;
}
try {
$dbh = testdb_connect ($hostname, $username, $password);
// echo 'Connected to database';
} catch(PDOException $e) {
// echo $e->getMessage();
}
$articleid=$_POST[articleid];
$published="0";
print_r($_GET); // returns empty
print_r($_POST); // returns: Array ( [username] => foobar [useremail] => test@yahoo.com [commbody] => asdf sdf [articleid] => 1)
$sql="INSERT INTO weblog_comments (id, articleid, username, useremail, commbody, published) VALUES (:id, :articleid, :username, :useremail, :commbody, :published)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':articleid', $articleid);
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':useremail', $_POST['useremail']);
$stmt->bindParam(':commbody', $_POST['commbody']);
$stmt->bindParam(':published', $published);
$stmt->execute();
if (!$stmt) {
echo "'nPDO::errorInfo():'n";
print_r($dbh->errorInfo());
}
?>
我一直得到一个语法错误…不知道我的查询结构有什么问题……表的列和拼写与mySQL表结构
相同。致命错误:未捕获异常'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064你的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在"at line 1"
您正在创建一个INSERT
语句,但是您缺少VALUES (...)
组件:
INSERT INTO weblog_comments (id, articleid, ...)
VALUES (:id, :articleid, ....)
注意,通常不为AUTO_INCREMENT
字段插入id
值。一个将由数据库自动分配。