我正在使用PDO在php中使用MySQL進行準備查詢。查詢執行時沒有錯誤,但一個參數不能正確傳遞值。它來自一個空白字段,但不是NULL。這真的很奇怪,因爲看起來我輸入的代碼與其他代碼相同,當然這很好。真令人沮喪。PHP PDO準備插入查詢。值不通過的問題
$f_name = $_POST['f_name'];
$l_name = $_POST['l_name'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$address1 = $_POST['address_1'];
$address2 = $_POST['address_2'];
$suburb = $_POST['suburb'];
$city = $_POST['city'];
$country = $_POST['country'];
$phone = $_POST['phone'];
include('db_connect.php');
$stmt = $db_connection->prepare('INSERT INTO tblUser (userID,fName, lName, email, password, addressLine1, suburb, city, country, phone) VALUES(NULL, :f_name, :l_name, :email, :pass, :address1, :suburb, :city, :country, :phone)');
$stmt->bindParam(':f_name', $f_name, PDO::PARAM_STR);
$stmt->bindParam(':l_name', $l_name, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':pass', $pass, PDO::PARAM_STR);
$stmt->bindParam(':address1', $address1, PDO::PARAM_STR);
//$stmt->bindParam(':address2', $address2, PDO::PARAM_STR);
$stmt->bindParam(':suburb', $suburb, PDO::PARAM_STR);
$stmt->bindParam(':city', $city, PDO::PARAM_STR);
$stmt->bindParam(':country', $country, PDO::PARAM_STR);
$stmt->bindParam(':phone', $phone, PDO::PARAM_STR);
try {
$stmt->execute();
print_r($stmt);
$result = $stmt->fetchAll();
}
catch (Exception $e) {
echo $e;
}
print_r($ _ POST);的輸出; is:Array([email] => [email protected] [pass] => pass [pass_confirm] => pass [f_name] => fefs [l_name] => sfasafs [address_1] => sfafsa [address_2] => dsfsafsaf [suburb] => dffdsa [city] => dsffdf [country] => sfaafdsa [phone] => fsaafssaf [submit] =>註冊)
問題是數據庫中填充了新記錄,但密碼字段是空白。我刪除了哈希來簡化事情。
下面是用戶表的SQL:
CREATE TABLE IF NOT EXISTS `tbluser` (
`userID` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(40) NOT NULL,
`email` varchar(60) NOT NULL,
`addressLine1` varchar(30) DEFAULT NULL,
`addressLine2` varchar(30) DEFAULT NULL,
`suburb` varchar(30) DEFAULT NULL,
`city` varchar(30) DEFAULT NULL,
`country` varchar(40) DEFAULT NULL,
`phone` varchar(25) DEFAULT NULL,
`fName` varchar(30) DEFAULT NULL,
`lName` varchar(30) NOT NULL,
`admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`userID`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `email_3` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
密碼字段爲空,如在中,它包含一個空字符串,是否正確? 'print_r($ stmt)'顯示了什麼? – 2009-10-20 02:21:46
它實際上並不顯示SQL查詢: PDOStatement對象([queryString] =>插入tblUser(用戶ID,fName,lName,電子郵件,密碼,地址線1,郊區,城市,國家,電話)VALUES(NULL,:f_name ,:l_name,:電子郵件,:傳球,:地址1,:郊區:城市:國家:電話)) 顯然,值給MySQL和它在爲此做。我曾嘗試設置日誌,但MyQL不會重新啓動。我可能會再試一次。 – 2009-10-20 03:19:13