现在试图解决这个问题。没有这样的运气。在简单的表单提交上获取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行”附近使用正确的语法
答案 0 :(得分:1)
您正在创建INSERT
语句,但您遗漏了VALUES (...)
组件:
INSERT INTO weblog_comments (id, articleid, ...)
VALUES (:id, :articleid, ....)
注意,通常您不会为id
字段插入AUTO_INCREMENT
值。一个将由数据库自动分配。