将MySQL查询的结果分配给字符串

时间:2014-10-16 16:33:07

标签: php mysql

我正在使用PHP与MySQL一起开发Web应用程序。我在另一个页面上成功查询了数据库,并将结果返回到动态创建的表中。在这种情况下,我只需要从数据库中获取一个名称。

我使用相同的基本原则,我试图将结果分配给变量,但它对我进行了轰炸。我知道我的联系很好。我直接在PhpMyAdmin中运行查询,它可以工作。

以下是代码:

<?php
$con=mysqli_connect("....");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id_num = mysqli_real_escape_string($con, $_POST['id_num']);
$username = mysqli_real_escape_string($con, $_POST['username']);

$result = mysqli_query($con,"SELECT NAME FROM users where ID ='".$id_num."' AND username='".$username."'");
$row = mysqli_fetch_array($result));
$name = $row['NAME'];
echo $name;
mysqli_close($con);
?>

它给出的错误是:

  

解析错误:语法错误,意外&#39;)&#39;在第14行的D:\ Hosting \ 8715276 \ html \ delta \ login.php

我确定这是因为我对php不熟悉。我已经找到了如何做到这一点的细节,但我并没有真正转变太多。我调查了mysqli_fetch_array,但php.net上的示例打印并且不分配给变量。我有点想过(在他们的例子中)这是否有效:

$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

然后

$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $name = $row['NAME'];
    echo $name;

同样应该工作。它不是。任何建议或链接都​​会有所帮助。我一直在看 http://php.net/manual/en/mysqli-result.fetch-array.php

3 个答案:

答案 0 :(得分:3)

第14行你有一个额外的右括号(正如错误所说):

$row = mysqli_fetch_array($result));

应该是:

$row = mysqli_fetch_array($result);

答案 1 :(得分:1)

弹出的一件事是

$row = mysqli_fetch_array($result));

应该是:

$row = mysqli_fetch_array($result);

在行尾注意括号。

答案 2 :(得分:1)

经过一些测试后,我得出了一些结论,即你没有为你的列使用正确的字母大小写,包括WHERE子句中的(用户名)列。

您在选择NAME而非username以及另一段代码name中注意到$row["Name"]

确保您的专栏名称确实是name而不是NAMEusername,这取决于您选择的方式/内容,有关此内容的更多信息可在下方找到

以下是您的代码,顺便说一下mysqli_fetch_array($result));

中的括号太多了
$result = mysqli_query($con,"SELECT NAME FROM users where ID ='".$id_num."'  
AND username='".$username."'");

$row = mysqli_fetch_array($result));
$name = $row['NAME'];
echo $name;

这就是我的结论(作为诊断):

$result = mysqli_query($con,"SELECT name FROM users where ID ='".$id_num."'  
AND name='".$username."'");

$row = mysqli_fetch_array($result);
$name = $row['name'];
echo $name;

但是,当您SELECT column时,$row['column']必须与您选择的匹配。

这样做:

SELECT NAME$row['NAME']可行,但不是SELECT NAME$row['name']

与您的WHERE条款一起使用。

error reporting添加到文件的顶部,这有助于查找错误。

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

旁注:错误报告应仅在暂存时完成,而不是生产。

or die(mysqli_error($con))包括在mysqli_query()


另外,正如你在Shomz的答案中所说的那样:

“我已将其缩小为我的SQL查询中的内容。如果我用静态输入替换ID ='".$id_num."' AND username='".$username."'");,则可以正常工作。”

这告诉我您可能没有正确分配变量。也许是一个未命名的表单元素,或者根本没有变量。很难说是肯定的,因为你的问题没有显示足够的信息来确定(HTML表单本身),但这些都是可能的情况。

使用错误报告会发出未定义的索引和/或未定义的变量。

如果您的表单元素分别不包含name="id_num"name="username",那么这将是您的代码失败原因的另一个可能原因。

  • 我只是试图深入了解它,以了解/找出查询失败的具体原因。