首页 > 解决方案 > PHP 不执行 MySqli 查询

问题描述

这段代码的大部分工作都很好,当我单击按钮时数据库会更新,但最后一个查询(更新)由于某种原因没有执行。我尝试在 phpmyadmin 上打开 mysql 日志,但即使在那里也没有执行。它没有向我显示任何错误,我真的不知道可能出了什么问题。

$query = "SELECT username, coins FROM users WHERE userid='$userid' LIMIT 1";
$result = mysqli_query($db, $query);
$user = mysqli_fetch_assoc($result);
$_SESSION['username'] = $user['username'];
$_SESSION['coins'] = $user['coins'];

$op = $user['username'];
$op = mysqli_real_escape_string($forumdb, $op);
$postcontent = $_POST['postcontent'];
$postcontent = mysqli_real_escape_string($forumdb, $postcontent);
$posttitle = $_POST['posttitle'];
$posttitle = mysqli_real_escape_string($forumdb, $posttitle);
$sectionid = $_GET['sectionid'];
$sectionid = mysqli_real_escape_string($forumdb, $sectionid);

$query = "INSERT INTO topic (section_id, name, replies, op, lastpost, lastuserid, views, sticked) values('$sectionid', '$posttitle', '0','$op', CURRENT_TIMESTAMP(),'$userid', '0', '0')";
$result = mysqli_query($forumdb, $query) or trigger_error("Query Failed! SQL: $query - Error: ".mysqli_error($forumdb), E_USER_ERROR);

$last_id = mysqli_insert_id($forumdb);

$query = "INSERT INTO posts (topic_id, content, user_id) values('$last_id', '$postcontent', '$userid')";
mysqli_query($forumdb, $query);

$query = "UPDATE section SET lastpost='$username', threads=threads+1, posts=posts+1 WHERE id='$sectionid'";
mysqli_query($forumdb, $query) or trigger_error("Query Failed! SQL: $query - Error: ".mysqli_error($forumdb), E_USER_ERROR);

标签: phpmysqldatabasesessionmysqli

解决方案


如果您解释了“由于某种原因不执行”的含义,那将会很有帮助。

要么你得到一个错误,表明 SQL 在运行时无效,要么继续执行并且没有更改任何数据。

在不知道错误是什么的情况下,我们无法告知会导致错误的原因。如果继续执行,但记录没有(显然)更新,那么一定是因为更新语句的 WHERE 子句没有匹配任何行。您可以通过检查mysqli_affected_rows()来验证这一点。

您之前运行的查询将在 mysql 常规日志中。您可能希望将 SQL 语句回显到输出并检查它是否按预期填充


推荐阅读