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

时间:2016-09-04 11:34:44

标签: php mysql

现在试图解决这个问题。没有这样的运气。在简单的表单提交上获取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表结构相同

致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在“第1行”附近使用正确的语法

1 个答案:

答案 0 :(得分:1)

您正在创建INSERT语句,但您遗漏了VALUES (...)组件:

INSERT INTO weblog_comments (id, articleid, ...)
  VALUES (:id, :articleid, ....)

注意,通常您不会为id字段插入AUTO_INCREMENT值。一个将由数据库自动分配。