gpt4 book ai didi

php - 带有 bindParam 的 PDO 语句中的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 22:42:21 25 4
gpt4 key购买 nike

我在准备好的语句中使用 bindParam 将行插入表中时遇到一些问题。

这是我的代码。

$table = 'companies';
$fields = array('name', 'address', 'phone');
$values = array('Company Name', 'Company address', '555-9999999');

$sql = 'INSERT INTO '.$table.' ('.implode(', ', $fields).') VALUES ('
.substr(str_pad('', (count($fields) * 3), '?, '), 0, -2).')';

$statement = $db->prepare($sql);

for ($i = 1; $i <= count($fields); $i++) {
$statement->bindParam($i, $$fields[$i-1]);
}

for ($i = 0; $i < count($fields); $i++) {
${$fields[$i]} = $values[$i];
}

try {
$result = $statement->execute();
$this->rowCount = $result ? $statement->rowCount() : 0;
}
catch (Exception $ex) {
$this->error = $ex;
$result = false;
}

$sql 变成类似“INSERT INTO 公司(名称、地址、电话)VALUES (?, ?, ?)”的字符串

将 params 绑定(bind)到一些变量并为这些变量赋值后,我执行了该子句但没有任何反应,只是 $result 为 false 但没有错误。即程序的执行不会进入catch block 。

代码有什么问题?有什么解释吗?

感谢您的帮助。

最佳答案

我终于解决了这个问题。就我而言,问题在于我有一个 DateTime,因为我有一个 DateTime 字段,所以我试图将它直接存储在数据库中。

解决方案:将DateTime字段转换成String做

$dateTimeField->format('Y-m-d H:i:s')

关于php - 带有 bindParam 的 PDO 语句中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30778265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com