gpt4 book ai didi

php - 在 mysql DB 中插入 php 数组 - 语法正确,未插入值

转载 作者:行者123 更新时间:2023-11-29 13:08:07 25 4
gpt4 key购买 nike

我编写了这段代码,应该将一些事件数据插入到我的数据库中,但它没有在数据库中插入任何内容,你能告诉我为什么吗?

try {
$pdo = new PDO("mysql:host={$dbhost};dbname={$dbname}", $dbuser, $dbpass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch( PDOException $excepiton ) {
echo "Connection error :" . $excepiton->getMessage();
}




try{
$sql = "INSERT INTO events_DB (event_id, event_end_time, event_location, event_name) VALUES (:event_id, :event_end_time, :event_location, :event_name) ON DUPLICATE KEY UPDATE event_id = :event_id, event_end_time = :event_end_time, event_location = :event_location, event_name = :event_name";

$stm = $db->prepare($sql);
$stm->execute(array(":event_id" => $event[id], ":event_end_time" => $event[end_time], ":event_location" => $event[location], ":event_name" => $event[name]));

}
catch ( PDOException $exception )
{
// decomentati sa vedeti erorile
echo "PDO error :" . $exception->getMessage();
}

谢谢

最佳答案

您发布的代码与您正在运行的代码不同,因为发布的代码会在解析时导致语法错误,并且永远不会实际运行。

但是,发生的情况是发送到准备方法的 SQL 在某种程度上无效,因此返回并存储在 $stm 中的结果是 bool 值 (false),而不是有效语句目的。仔细检查您的 SQL(您可以尝试在其他应用程序中运行它,例如 phpMyAdmin 或通过 mysql 命令行程序)以确保其有效性。您还可以添加一些错误处理来查找原因:

$stm = $db->prepare($sql);
if (!$stm) {
die($db->errorInfo());
}

编辑:您已修改了发布的源代码,该源代码现在显示了异常处理的使用。但是,您已经注释掉了与异常消息相呼应的行。此信息有助于告诉您导致错误情况的原因。取消注释即可查看该消息(这很可能会通知您该 SQL 无效以及它的哪一部分导致了错误)。

关于php - 在 mysql DB 中插入 php 数组 - 语法正确,未插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432052/

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