我在解決一些簡單的PHP代碼問題以在MySQL表中插入記錄時遇到了困難。插入MySQL數據庫的PHP PDO代碼失敗
該代碼直接輸入到WAMP正常工作:
INSERT INTO `users` (`userName`,`userEmail`) VALUES ('orange','[email protected]')
這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, '[email protected]');
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看到:似乎
http://jdelage.public.s3.amazonaws.com/project_sch.jpg
你能嘗試運行'的print_r($ dbh-> errorInfo中());'連接和查詢後?這應該提供一些有用的調試信息。 – lonesomeday 2011-06-09 20:51:57
你需要在這裏做什麼而不是所有的打印語句是檢查'$ query'的錯誤狀態'var_dump($ query-> errorInfo());'並檢查'$ query-> errorCode()' – 2011-06-09 20:52:54
我修改了代碼以包含這些代碼。 – JDelage 2011-06-09 21:10:46