【问题标题】:PHP Doesn't execute MySqli QueryPHP 不执行 MySqli 查询
【发布时间】:2019-02-07 10:40:42
【问题描述】:

大部分代码都可以正常工作,当我单击按钮时数据库会更新,但最后一个查询(更新)由于某种原因没有执行。 我尝试在 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);

【问题讨论】:

  • 您总是更新 id=1 的同一节记录?
  • 不,只是我很沮丧,以至于我尝试手动插入值以了解这是不是拼写错误或什么。不过我更新了它
  • 以前从未见过:threads=threads+1,posts=posts+1,如果你需要增加列的值,在这种情况下你必须使用 php。您可以尝试回显您的查询,并尝试在 db 中执行它并查看错误结果。
  • tech-recipes.com/rx/2139/mysql_increment_an_exisitng_value 我不是 100% 确定这一点,但我想我以前用过它,它有效 编辑:我尝试执行它,将 $username 更改为随机名称,它确实有效
  • ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 添加到脚本顶部。这将强制任何 mysqli_ 错误生成您可以在浏览器上看到的异常以及正常的 PHP 错误。

标签: php mysql database session mysqli


【解决方案1】:

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

您会收到一条错误消息,表明 SQL 在运行时无效,或者继续执行并且没有更改任何数据。

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

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

【讨论】:

  • 它没有显示任何错误,它继续执行,但它没有改变任何行。我尝试直接在 phpmyadmin 上插入完全相同的代码,它可以工作,所以关于 WHERE 子句也不是问题
【解决方案2】:

您可以使用以下方法来解决您的问题:

"UPDATE `section` SET `lastpost`='$username', `threads`=threads+1, `posts`=posts+1 WHERE `id`='$sectioni

【讨论】:

    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多