mysqlPDO访问冲突,不确定问题是什么


mysqlPDO access violation, not sure what the issue is

我已经想了一段时间了。没有这样的运气。在一个简单的表单提交上获得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值。一个将由数据库自动分配。