具有多个连接的 mysqli Prepared 语句不断返回 false [关闭]
Posted
技术标签:
【中文标题】具有多个连接的 mysqli Prepared 语句不断返回 false [关闭]【英文标题】:mysqli Prepared statements with multiple joins keeps returning false [closed] 【发布时间】:2020-09-23 14:46:09 【问题描述】:我应该设计一个考试服务器系统,但我在尝试使用 mysqli 的准备函数准备语句时不断出错。我正在使用 php 连接到由 $conn 变量表示的 sql(它确实连接到数据库),并且我在 mysql 工作台中尝试了相同的确切语句,它工作正常。这是我写的代码:
$stmtTempTable = $conn->prepare("CREATE TEMPORARY TABLE front_action_temp
SELECT * FROM front_action
WHERE time_offset > 0");
$stmt = $conn->prepare("SELECT event_name, status, day_of_week, week_of_year, event_year, start_time, time(start_time +
time_offset) as end_time, machine_group
FROM front_weekly
LEFT JOIN front_event ON front_weekly.event_id=front_event.event_id
LEFT JOIN front_daily ON front_event.event_id=front_daily.event_id
LEFT JOIN front_group ON front_daily.group_id=front_group.group_id
LEFT JOIN front_action_temp ON front_action_temp.event_id=front_event.event_id
WHERE day_of_week=? and week_of_year=? and event_year=?");
if ($stmt === false)
die('Unable to execute');
else
$stmt->bind_param('sss', $dayOfWeek, $weekNumber, $year);
$stmt->execute();
我一直在为 $stmt 弄错。任何想法为什么?
【问题讨论】:
$stmtTempTable
永远不会被执行。
您需要停止手动检查错误。请阅读:Should we ever check for mysqli_connect() errors manually? 和 Should I manually check for errors when calling “mysqli_stmt_prepare”?
$stmtTempTable
不需要准备,您没有传递任何占位符/值。
【参考方案1】:
你只是prepare()
CREATE TEMPORARY TABLE...
,而不是execute()
。第二条语句失败,因为表不存在。
【讨论】:
以上是关于具有多个连接的 mysqli Prepared 语句不断返回 false [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PDO vs MYSQLI,Prepared Statemens 和绑定参数
MYSQLI Prepared statement update statement with where in array
致命错误:未捕获的异常 'mysqli_sql_exception' 带有消息 'No index used in query/prepared statement'