Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO准备的插入查询。未传递值的问题_Php_Mysql_Pdo - Fatal编程技术网

PHP PDO准备的插入查询。未传递值的问题

PHP PDO准备的插入查询。未传递值的问题,php,mysql,pdo,Php,Mysql,Pdo,我使用PDO在php和MySQL中进行准备好的查询。查询执行时没有错误,但有一个参数没有正确传递其值。它以空白字段的形式出现,但不能为空。这真的很奇怪,因为看起来我输入的代码和其他人一样,当然工作正常。真令人沮丧 $f_name = $_POST['f_name']; $l_name = $_POST['l_name']; $email = $_POST['email']; $pass = $_POST['pass']; $address1 = $_POST['address_1']; $add

我使用PDO在php和MySQL中进行准备好的查询。查询执行时没有错误,但有一个参数没有正确传递其值。它以空白字段的形式出现,但不能为空。这真的很奇怪,因为看起来我输入的代码和其他人一样,当然工作正常。真令人沮丧

$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;
}
打印输出(邮政美元);is:数组([电子邮件]=>test@test.com[通过]=>通过[通过确认]=>通过[f_姓名]=>fefs[l_姓名]=>sfasafs[地址1]=>sfafsa[地址2]=>dsfsafsaf[郊区]=>dffdsa[城市]=>dsffdf[国家]=>sfaafdsa[电话]=>fsaafssaf[提交]=>注册)

问题是数据库中填充了新记录,但密码字段为空。我删除了散列以简化事情

以下是用户表的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 ;

您没有碰巧在
db_connect.php
中定义
$pass
,是吗?如果您这样做,它将覆盖您的原始声明。

您没有碰巧在
db\u connect.php
中定义
$pass
,是吗?如果您这样做,它将覆盖您的原始声明。

密码字段为空,如中所示,它包含一个空字符串,对吗?
print\r($stmt)
显示了什么?它实际上没有显示SQL查询:PDOStatement对象([queryString]=>插入到tblUser(userID、fName、lName、email、password、addressLine1、郊区、城市、国家、电话)值(NULL、:f\u name、:l\u name、:email、:pass、:address1、:郊区、:city、:country、:phone))显然,这些值都是给MySQL的,并且在这一点上就完成了。我以前尝试过设置日志,但MyQL无法重新启动。我可能会重试。密码字段为空,如中所示,它包含一个空字符串,对吗?
print\r($stmt)
显示了什么?它实际上没有显示SQL查询:PDOStatement对象([queryString]=>插入到tblUser(userID、fName、lName、email、password、addressLine1、郊区、城市、国家、电话)值(NULL、:f\u name、:l\u name、:email、:pass、:address1、:郊区、:city、:country、:phone))显然,这些值都是给MySQL的,并且在这一点上就完成了。我以前尝试过设置日志,但MyQL无法重新启动。我可以再试一次。解决这个问题的一个简单方法是将当前存在的所有代码移动到一个函数中,然后调用该函数。。。如果没有全局关键字,PHP就看不到全局变量(除了超全局变量)。哦,伙计,我肯定就是这样。谢谢大家的帮助。我可以把它移到函数中。猜猜看,为了测试目的,MySQL密码是解释空白密码字段的空字符串。在那里,我认为这部分“起作用”,并将其排除在等式之外。感谢etheros、Bemrose和James之前的帮助。解决这个问题的一个简单方法是将当前存在的所有代码移动到一个函数中,然后调用该函数。。。如果没有全局关键字,PHP就看不到全局变量(除了超全局变量)。哦,伙计,我肯定就是这样。谢谢大家的帮助。我可以把它移到函数中。猜猜看,为了测试目的,MySQL密码是解释空白密码字段的空字符串。在那里,我认为这部分“起作用”,并将其排除在等式之外。感谢埃瑟罗斯、贝姆罗斯和詹姆斯早些时候的帮助。