【问题标题】:mySQL query working in PHPmyAdmin but not in PHP filemySQL 查询在 PHPmyAdmin 中工作,但不在 PHP 文件中
【发布时间】: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 queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 这里又是一个不清楚的帖子。
  • 不知道怎么不清楚?但感谢您的创意投入。
  • 其他查询是否按预期工作?您是否尝试过剥离代码或查询以确认更简单的版本是否有效?如果你在 while 循环中 var_dump $contact 的内容会发生什么?与其说是不清楚,不如说是不必要的复杂。你需要为这个问题做混合 PHP/HTML 吗?您是否尝试过在没有其他所有东西的情况下进行测试?
  • 是的,页面上的所有查询都可以正常工作。我什至从查询字符串中删除了变量,只使用了我正在测试的特定帐号。我将在中间没有 html 的情况下对其进行测试,看看是否是导致问题的原因。感谢您的回答!

标签: php mysql


【解决方案1】:

尝试在 FROM 子句中指定您的数据库:

SELECT * FROM myDatabase.accountContactDetails WHERE acNo='$acNo';

这也应该是一个准备好的声明,正如他们上面所说的:

$sql = 'SELECT * FROM myDatabase.accountContactDetails WHERE acNo=?';
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $acNo);

【讨论】:

    【解决方案2】:

    试试这个查询

    $getContacts="SELECT * FROM accountContactDetails where acNo = {$acNo}";
    

    【讨论】:

    • 原来我在错误的数据库中创建了表。如此愚蠢的错误(对我来说这是漫长的一天的结束)抱歉浪费您的时间。
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 2015-05-17
    • 2018-07-19
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2019-02-09
    相关资源
    最近更新 更多