【问题标题】:Mysqli query return empty resultsMysqli 查询返回空结果
【发布时间】:2013-09-09 13:16:56
【问题描述】:

我正在尝试使用此代码从我的数据库中获取一些数据:

<?php

error_reporting(E_ALL);
ini_set('display_errors',1);


$mysqli2 = new mysqli(********************);

    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
   }

    $sql2 = "SELECT message FROM wall_workouts_names WHERE id = ? ";

    $stmt2 = $mysqli2->prepare($sql2) or trigger_error($mysqli2->error."[$sql2]");

    $id_for_wall = '43';

    $stmt2->bind_param('s', $id_for_wall);

    $stmt2->execute();

    $stmt2->bind_result($message);

    $stmt2->store_result();

    $stmt2->fetch();

        echo $message;

?>

我的问题是我的回显中有空字符串。

但如果我在我的 phpmyadmin 中运行相同的查询,我会得到很好的结果。

感谢您的帮助

【问题讨论】:

  • 虽然这个问题确实过于本地化,但 +1 是因为错误报告几乎是正确的。
  • 直截了当:您的代码看起来没问题。人类所能说出的。要调查问题,您必须运行代码并对其进行调试。你越早理解它,你的代码就越早工作。

标签: php mysqli


【解决方案1】:

WHERE 子句中很可能没有匹配条件的行,即 id = 43

【讨论】:

  • 尝试在此处使用硬编码(未绑定)值运行它并查看。使用 query()/fetch_array()
  • 我尝试了硬编码,但结果为空。但是当我在我的 phpadmin 中使用它时,同样的查询,我得到了很好的结果......
  • 那么,您正在使用 phpmyadmin 查询另一个数据库
  • 不是,我确定。
  • 你最好相信你的眼睛,而不是猜测。这是开发人员必须培养的一项最重要的技能。尝试从表中选择所有记录并查看。
【解决方案2】:

像这样检查您的传入结果。

 while ($stmt->fetch()) {
   echo $message;    
 }

【讨论】:

  • 此代码本身无用,无助于解决特定问题。
猜你喜欢
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2021-03-18
  • 2021-11-20
  • 2019-10-13
  • 1970-01-01
相关资源
最近更新 更多