【问题标题】:Query works in phpmyadmin but not in PHP script查询在 phpmyadmin 中有效,但在 PHP 脚本中无效
【发布时间】:2013-10-10 19:14:45
【问题描述】:

我发现了类似的问题,但还不能解决我的问题。以下是相关代码:

$query = "SELECT * FROM conceptos WHERE descripcion = '$descripcion'";
if ($result = mysql_query($query,$connection)){
    if (mysql_num_rows($result) > 0){
        //Do something
    } else {
        die($query);
        exit;
    }
} else {
    die(mysql_errno() . ' - ' . mysql_error());
    exit;
}

我的连接或权限没有问题,因为这段代码 sn-p 在循环中,其他查询进入“做某事”部分。但是当我接受回显查询并在 phpMyAdmin 中执行它时,它会按预期返回 1 个值。为什么?什么原因会导致这种行为?提前感谢您的任何建议。

【问题讨论】:

  • 将 die($query); 更改为 die(mysql_error()) 并查看它的输出。
  • 另请注意,mysql_ 函数已被弃用,如果可以,您应该考虑切换到 mysqli 或 PDO。
  • @AmalMurali mysql_errno() 输出 0 而 mysql_error() 什么也不输出。该查询没有错误,因为它输入的是 if 部分而不是代码的 else 部分。问题是查询没有返回任何值,并且相同的查询(从模具中)复制并粘贴到 myphpadmin 中得到一个结果!
  • 如果描述是一些可变文本,那么 a) 编码可能会被弄乱 b) 太多的字符转义。 (b) 的示例:您可以在描述中包含 & 或 <,在 html 中输出后变为 & 和 <。
  • @SergeSeredenko 我认为问题可能出在编码上...... $description 变量有一个单引号,但我在构造 $query 字符串变量之前使用 mysql_real_escape_string() 对其进行了转义。

标签: php mysql phpmyadmin


【解决方案1】:

我遇到了这个问题,发现这是因为我通过从 MS Word 直接复制/粘贴到数据库而将我的数据库垃圾了。粘贴插入了特殊的倾斜撇号,PHPMYADMIN 显然可以解析,但我的 php 代码不能。一旦我用标准的单引号替换了那些,一切都很好。

【讨论】:

    【解决方案2】:

    试试这个“SELECT * FROM conceptos”。如果它有效,您在“WHERE ...”中有错误的查询

    【讨论】:

    • 这个相同的查询在出现问题之前(使用 where 部分)执行了大约 1,000 次......查询本身没有错误,问题是它没有结果但它必须有。如果在 phpmyadmin 中执行包含 where 部分的相同查询,它会按预期工作。
    【解决方案3】:

    您确定您的查询正在搜索正确的描述吗?双引号应该扩展所有内部变量,但你也有单引号,以防复制到 stackoverflow 问题。

    这将确保描述被扩展以防万一。

    $query = "SELECT * FROM conceptos WHERE descripcion = '" . $descripcion . "'";
    

    其次,您是否按照@crotos 的建议验证了您正在使用的变量内容?

    mysql_ 也已被弃用,因此您应该使用 PDO,或者至少使用 mysqli_。

    【讨论】:

    • 我知道mysql_不推荐使用的功能,但这是一个旧项目。
    【解决方案4】:

    您可以尝试设置您的 mysql 服务器的一般查询日志,并查看真正执行了哪些查询。见http://dev.mysql.com/doc/refman/5.1/en/query-log.html

    另外,请检查您的编码。也许您的 mysql 连接是 ISO8859-1 并且您的表字段是 UTF-8(或相反)。您的数据中是否有任何重音符号或特殊字符?

    【讨论】:

    • ZeWaren 也许我必须重新提出这个问题,也许问题是关于如何在 PHP 中进行类似于 phpmyadmin 的查询,即在 phpmyadmin 和 php 脚本中使用什么编码。感谢您的链接。
    【解决方案5】:

    我也遇到了这个问题,并使用以下方法解决了它:

    mysqli_query($con,$query);
    

    而不是

    mysql_query($query);
    

    因为它贬值了

    来源:

    File Downloading error from database php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2012-05-10
      相关资源
      最近更新 更多