gpt4 book ai didi

php - mysql execute() (PDO) 不在表中插入任何内容

转载 作者:行者123 更新时间:2023-11-29 01:22:58 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我在我的网站上使用了一段 100% 有效的代码,但在特定的地方不起作用。这是代码:

$stmt_insert_query = "INSERT INTO mya_events(event_id, artist_id, event_title, date, event_text, event_start, event_duration, genre, soundcloud_preview, event_type, country, ext, clicks, active) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt_insert = $db->prepare($stmt_insert_query);
$stmt_insert->bindValue(1, $next_avail, PDO::PARAM_INT);
$stmt_insert->bindValue(2, $_id, PDO::PARAM_INT);
$stmt_insert->bindValue(3, $_POST['event_title'], PDO::PARAM_STR);
$stmt_insert->bindValue(4, $event_date, PDO::PARAM_STR);
$stmt_insert->bindValue(5, $_POST['event_text'], PDO::PARAM_STR);
$stmt_insert->bindValue(6, $_POST['event_start'], PDO::PARAM_STR);
$stmt_insert->bindValue(7, $_POST['event_duration'], PDO::PARAM_STR);
$stmt_insert->bindValue(8, 'electronica', PDO::PARAM_STR);
$stmt_insert->bindValue(9, '', PDO::PARAM_STR);
$stmt_insert->bindValue(10, 'dj_event', PDO::PARAM_STR);
$stmt_insert->bindValue(11, 'US', PDO::PARAM_STR);
$stmt_insert->bindValue(12, '', PDO::PARAM_STR);
$stmt_insert->bindValue(13, 0, PDO::PARAM_INT);
$stmt_insert->bindValue(14, 'y', PDO::PARAM_STR);
$stmt_insert->execute();

在这段代码之后,我将显示一个显示的文本。我还用 print_r($db->e​​rrorInfo()); 检查了错误但没有显示错误。也试过 try - catch 但没有。

我从 phpMyAdmin 手动输入了一行,它有效。

我哪里错了?我检查了 10 次代码,它是完美的。


更新

我在服务器的日志中发现一个错误正是我做的地方->执行

[2012 年 10 月 11 日 14:48:15] PHP fatal error :未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“event_id”、“artist_id”、“event_title”、“date”、“event_text”、“event_start”、“ev”附近使用的正确语法/home/cubeworx/public_html/electronicdancemusic.net/MYArtist/admin/list_events.php:527堆栈跟踪:

0/home/cubeworx/public_html/electronicdancemusic.net/MYArtist/admin/list_events.php(527): PDOStatement->execute()

1 {主要}

放在/home/cubeworx/public_html/electronicdancemusic.net/MYArtist/admin/list_events.php 第 527 行

最佳答案

作为对 OP 最终评论的回应:
啤酒会很好,但由于技术还没有达到可以通过任何协议(protocol)传输液体的阶段(目前),所以赞成票就可以了;)。由于这解决了您的问题,并且可以在将来为您节省数小时的调试时间:一些提示(使用 PDO 时):

  • 尝试将您的 ini 设置为 E_ALL | E_STRICT 避免警告和错误被抑制
  • 始终使用$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 强制 PDO 在以下情况下抛出 PDOExceptions查询失败。
  • 在查询时,尽可能使用dbName.tblName,以避免不小心操作错误的数据库
  • 在使用变量/数组键之前总是检查它是否存在
  • 使用准备好的语句,最好使用命名占位符,以确保您的代码对您自己和其他人更具可读性

关于php - mysql execute() (PDO) 不在表中插入任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838214/

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