我一整天都在研究一个php脚本,它从一个mysql数据库中提取数据。我的脚本运行得很好,然后mysql突然停止返回带有某些查询的行。它从一个复杂的连接开始,但是现在一个特定的查询将不会返回行。粘贴到phpmyadmin中的同一个查询返回一行。
首先,查询:

    $sql = "SELECT tagsetsname_id FROM tagsets_docpaths_sets WHERE documents_paths_id = '233'";  //the '233' comes from {$_SESSION['document']['docpathid']}

当我在phpmyadmin中粘贴此查询时,会得到以下结果:
tagsetsname_id
    0

这就是我想要的结果。tagsetname_id为0。
当我在php脚本中尝试此操作时:
    //$db is connection to a database, some queries are working so $db is connected
    $sql = "SELECT tagsetsname_id FROM tagsets_docpaths_sets
    WHERE documents_paths_id = '233'";
$res = $db->query($sql);

再看看Firebug中的$res,我得到了以下结果:
    mysqli_result(
    current_field =
    field_count =
    lengths =
    num_rows =
    type =
    )

它是空的。我很困惑。
我重新启动了apache;我重新启动了mysql。
我能错过什么简单的事情?
我是mysql新手。数据库是否会以某种方式损坏?有没有重建或者我可以尝试的东西?
**脚本
    $sql = "SELECT tagsetsname_id FROM tagsets_docpaths_sets \
    WHERE documents_paths_id = '{$_SESSION['document']['docpathid']}'";
    //{$_SESSION['document']['docpathid']} = 233;

    $res = $db->query($sql);
    $row = $res->fetch_row();
    $firephp->trace($db);
    $firephp->group('tags');
    $firephp->log('$sql');
    $firephp->trace($sql);
    $firephp->log('$row');
    $firephp->trace($row);
    $firephp->groupEnd();

**调试
    mysqli(
    affected_rows =
    client_info =
    client_version =
    connect_errno =
    connect_error =
    errno =
    error =
    field_count =
    host_info =
    info =
    insert_id =
    server_info =
    server_version =
    stat =
    sqlstate =
    protocol_version =
    thread_id =
    warning_count =
    )

    SELECT tagsetsname_id FROM tagsets_docpaths_sets WHERE documents_paths_id = '233'

     $row
    null
    File         Line   Instruction
    .../create_metatags.php

    291

    FirePHP->trace( '')

然而,在phpmyadmin中,调试中粘贴的$sql运行得非常好。我疯了吗?!

最佳答案

如本页所示,$res->fetch_row()返回一个带有数字索引的数组的结果。您的结果应该在$row[0]中。

关于php - 简单的mysql查询可以在phpmyadmin中使用,但不能在php脚本中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15148447/

10-16 11:46