有人可以指出这段代码有什么问题,或至少解释如何从中获取任何错误消息?我不知道如何麻烦拍得更远。
try {
$db = new PDO($dbhost, $dbuser, $dbpassword);
$sql = "INSERT INTO reports (Type, Location, Urgency, Description, Suggestion, Confidential, Email, Date, Time, Status, Link, ID, Title, Dopen) VALUES ('$type','$location','$urgency','$description','$solution','$confidential','$name','$date', '$time','Open','$link','$id', '$title','$date2')";
$sth = $db->query($sql);}
catch(PDOException $e) {echo $e->getMessage();}
答案 0 :(得分:0)
PDO构造函数中的第一个变量不仅是主机名。
以下是直接来自文档页面的示例:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
但是看看你的变量名,我怀疑你的$dbhost
只包含类似“localhost”的东西
答案 1 :(得分:0)
添加第二行:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
答案 2 :(得分:0)
我会这样做。
try {
$db = new PDO($dbhost, $dbuser, $dbpassword);
$stmt = $dbh->prepare("INSERT INTO reports (Type, Location, Urgency, Description, Suggestion, Confidential, Email, Date, Time, Status, Link, ID, Title, Dopen) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->execute(array($type,$location,$urgency,$description,$solution,$confidential,$name,$date, $time,'Open',$link,$id, $title,$date2));
}
catch(PDOException $e) {echo $e->getMessage();}
如果这不起作用,请告诉我们错误信息是什么。
将准备好的语句与PDO一起使用,这是使用PDO的最重要原因之一。只是将变量粘贴到SQL中很容易产生错误,sql注入等等。
为了使我的答案更加完整,请按照其他人的建议行事。
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
并且还注意到$ dbhost应该是DSN。
听起来你真的需要阅读PDO的文档。一旦您阅读文档,它就是一个真正简单的抽象层。 http://php.net/pdo