【发布时间】:2016-01-28 22:43:44
【问题描述】:
根据我发现和看到的一切,这似乎是正确的。当我打印 $query 时,结果如下:
“插入客户(FirstName、MiddleInit、LastName、地址、城市、州、邮编、电子邮件、性别)值 (?,?,?,?,?,?,?,?,?)”
参数应该已经用bindValues()中的变量填充了。所以,例如...
插入客户(FirstName、MiddleInit、LastName、地址、城市、州、邮编、电子邮件、性别)值(Bill, A, Hopkins, 123 Ave, ....)
我想坚持使用这种方法 - 它被一个 try/catch 块包围。通过打印查询变量,我可以看出问题所在。
我错过了什么?非常感谢您的关注!
$query = 'INSERT INTO customers (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (?,?,?,?,?,?,?,?,?)';
echo $query;
$statement = $db->prepare($query);
$statement->bindValue(1, $firstName);
$statement->bindValue(2, $middle);
$statement->bindValue(3, $lastName);
$statement->bindValue(4, $address);
$statement->bindValue(5, $city);
$statement->bindValue(6, $state);
$statement->bindValue(7, $zip);
$statement->bindValue(8, $email);
$statement->bindValue(9, $gender);
$success = ($statement->execute());
【问题讨论】:
-
不知道,没有足够的代码来提供解决方案。您是否使用 PDO 作为 API 进行连接,以及您的变量是否确实正确。检查错误。
-
准备好的语句不是这样工作的。该语句保留为带有占位符的查询(如带参数的函数),当在数据库上执行时,绑定参数被注入(如调用函数)
-
我投票结束这个问题,因为它是关于对准备好的陈述的误解
-
@Phil Example #2 php.net/manual/en/pdostatement.bindvalue.php 说明了这一点,还是我遗漏了什么?
-
我建议你阅读en.wikipedia.org/wiki/Prepared_statement。 @Fred-ii- 我认为 OP 期望通过绑定值来更改
$query字符串