我是一个有用的助手,可以翻译文本。
我有困难解决一些简单的PHP代码,将记录插入MySQL表中。
这段代码直接输入WAMP中可以正常工作:
这段PHP代码无法工作:
当我执行该页面时,我得到的输出如下所示:
记录没有被插入到数据库中。我做错了什么?我不确定在print_r中应该看到什么,我提供它们作为响应者的帮助。
谢谢,
JDelage 编辑 - 我添加了评论中推荐的print_r。
这是我在WAMP中看到的:
我有困难解决一些简单的PHP代码,将记录插入MySQL表中。
这段代码直接输入WAMP中可以正常工作:
INSERT INTO `users` (`userName`,`userEmail`) VALUES ('orange','orange@gmail.com')
这段PHP代码无法工作:
<?php
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="abcd";
$dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword);
print_r($dbh);
echo "</br>";
print_r($dbh->errorInfo());
$query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)");
echo "</br>";
print_r(var_dump($query->errorInfo()));
echo "</br>";
print_r($query->errorCode());
echo "</br>";
print_r($dbh->errorInfo());
$query->bindValue(1, 'apple');
echo "</br>";
print_r(var_dump($query->errorInfo()));
echo "</br>";
print_r($query->errorCode());
echo "</br>";
print_r($dbh->errorInfo());
$query->bindValue(2, 'apple@gmail.com');
echo "</br>";
print_r(var_dump($query->errorInfo()));
echo "</br>";
print_r($query->errorCode());
echo "</br>";
print_r($dbh->errorInfo());
$inserted=$query->execute(); //True if succesful, False if not.
echo "</br>";
print_r(var_dump($query->errorInfo()));
echo "</br>";
print_r($query->errorCode());
echo "</br>";
print_r($dbh->errorInfo());
echo "</br>";
if ($inserted){print_r("true");}else{print_r("false");};
?>
当我执行该页面时,我得到的输出如下所示:
PDO Object ( )
Array ( [0] => [1] => [2] => )
array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL }
Array ( [0] => 00000 [1] => [2] => )
array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL }
Array ( [0] => 00000 [1] => [2] => )
array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL }
Array ( [0] => 00000 [1] => [2] => )
array(3) { [0]=> string(5) "3D000" [1]=> int(1046) [2]=> string(20) "No database selected" }
3D000
Array ( [0] => 00000 [1] => [2] => )
false
记录没有被插入到数据库中。我做错了什么?我不确定在print_r中应该看到什么,我提供它们作为响应者的帮助。
谢谢,
JDelage 编辑 - 我添加了评论中推荐的print_r。
这是我在WAMP中看到的:
print_r($dbh->errorInfo());
。这将提供一些有用的调试信息。 - lonesomeday$query
的错误状态,使用var_dump($query->errorInfo());
并检查$query->errorCode()
。 - Michael Berkowskiproject
,那么我看到的唯一奇怪的事情是mysql:host=$dbHost;dbName=$dbName
。我无法想象它可能是问题,但是如果您将其更改为mysql:host=$dbHost;dbname=$dbName
(请注意dbname全部小写),您是否有相同的结果? - jeroen$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
。这样脚本会在出现错误时立即抛出异常。然后你可以使用try { .. }
和catch (Exception $e) { echo $e->getMessage(); }
来查看发生了什么。 - Dan Soap