【问题标题】:PHP mysql query does not workPHP mysql查询不起作用
【发布时间】:2013-12-15 17:56:06
【问题描述】:

我的问题如下: 我想显示 sql 数据库中的单行

链接是:/index.php?wh=1

代码:

$wh_id=($_GET["wh"]);
$wh_qr=mysql_query("SELECT name FROM warehouse WHERE warehouseid = '$wh_id';");

echo $wh_qr 上,我只得到资源 id #5,而不是数据库中“名称”的值。

我做错了什么?

【问题讨论】:

  • 您需要执行某种类型的循环,使用whileforeach 来遍历找到的结果(如果存在)。您不能只 echo 单独查询。向我们展示您的完整代码。
  • 它只有一个结果?,如果它超过on,它必须只选择on。因为它应该在最后显示类似:“你目前在:<?php echo $wh_qr ?>
  • 我相信我提到的可以在下面给出的答案中找到。
  • 这是我看过的最搞笑的SQL注入漫画。

标签: php mysql get


【解决方案1】:

mysql_query 返回 mysql result 而不是字符串,因此您可以回显,您需要做的是

$wh_id=($_GET["wh"]);
$wh_qr=mysql_query("SELECT name FROM warehouse WHERE warehouseid = '$wh_id';");
$row = mysql_fetch_assoc($wh_qr);
echo $row['name'];

请注意,您应该停止使用 mysql_* 函数,因为它们已被弃用,您还需要验证和清理您收到的任何用户输入。开始使用PDOMysqli 并开始使用prepared statements

【讨论】:

  • 它不起作用... 警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,资源在 C:\xampp\htdocs\index2.php 第 20 行给出
  • @user3101966 小错字,已修复。立即尝试。
  • 那是因为答案包含mysql_ 函数而不是mysqli_ @user3101966,这是问题中的“一个”。之前我要求您向我们展示您的完整代码。
  • @Fred-ii- 是的,对不起,这是我的错,我修好了。习惯了写mysqli而不是mysql。
  • 谢谢!这完美无缺。 MSQLI 呢?好点吗?每个数据库都支持这个吗?我的数据库很旧,我只是更新了网络界面。数据库是 2005 年...
【解决方案2】:

您必须执行以下操作。我还为您添加了一些错误处理。

$link = mysqli_connect("<HOST>", "<USERNAME>", "<PASSWORD>", "<DATABASE_NAME");
$result = mysqli_query($link,"SELECT name FROM warehouse WHERE warehouseid = '$wh_id';");
if (!$result) {
    echo 'Could not run query: ' . mysqli_error();
    exit;
}
$row = mysqli_fetch_row($result);
$echo $row["name"];

然后输出 $row 你应该得到你正在寻找的东西。 $row 将是一个字符串数组,每列一个您期望从查询中得到的字符串。

此外,您正在使用的所有功能都已弃用。您应该使用mysqli* 函数。

【讨论】:

  • 警告:mysqli_query() 需要至少 2 个参数,1 在 C:\xampp\htdocs\index2.php 第 19 行给出 警告:mysqli_fetch_row() 需要参数 1 为 mysqli_result,空值在C:\xampp\htdocs\index2.php 第 20 行
  • 如果您可以提供您的数据库连接变量名称,只需将其提供给mysqli_fetch_row 函数调用即可。我将更新我的帖子以包含...
  • 是的,但不是mysql_connect,而是mysqli_connect,无论您将该连接存储到什么变量,都会作为我在mysqli_fetch_row 函数中指定的$link 变量传递打电话。
  • @SlyRaskal mysqli_fetch_row 只需要 1 个参数而不是 2。它只需要 mysqli 结果。
  • @AliTrixx 是正确的,mysqli_fetch_row 只有一个参数,但我使用了 assoc(),它有效。坦克为您提供帮助,这是可行的解决方案:)
猜你喜欢
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多