【发布时间】:2018-02-20 17:45:46
【问题描述】:
我的一个查询有问题。我有一个查询,显示特定帐户的数据库中的联系人列表。当我将它放入 phpMyAdmin 时,我得到了预期的 1 个结果。当我尝试从 php 执行相同的查询时,我没有得到任何结果。
<?php
$getContacts="SELECT * FROM `accountContactDetails` where acNo='ZZZ001' ";
$contactsResults = $conn->query($getContacts);
if ($contactsResults->num_rows > 0) {
while($contact = $contactsResults->fetch_assoc()) {
echo $contact['email'];
}
}
var_dump($contactsResults);
echo $getContacts;
?>
底部带有 vardump 和执行查询的行输出这个..
bool(false) SELECT * FROM accountContactDetails where acNo='ZZZ001'
当我将完全相同的查询复制到 PHPmyAdmin 时,我得到一个结果。这与数据库连接无关,因为它在此查询之前和之后的文件中都有效。
谁能想到为什么这可能不会返回结果?非常感谢您提供任何帮助!
【问题讨论】:
-
警告:当使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
这里又是一个不清楚的帖子。
-
不知道怎么不清楚?但感谢您的创意投入。
-
其他查询是否按预期工作?您是否尝试过剥离代码或查询以确认更简单的版本是否有效?如果你在 while 循环中 var_dump
$contact的内容会发生什么?与其说是不清楚,不如说是不必要的复杂。你需要为这个问题做混合 PHP/HTML 吗?您是否尝试过在没有其他所有东西的情况下进行测试? -
是的,页面上的所有查询都可以正常工作。我什至从查询字符串中删除了变量,只使用了我正在测试的特定帐号。我将在中间没有 html 的情况下对其进行测试,看看是否是导致问题的原因。感谢您的回答!