我整天都在研究从单个 mysql 数据库中提取数据的 php 脚本。我的脚本运行良好,然后 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
这就是我想要的结果。 tagsetsname_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( '')
YET 在 phpmyadmin 中,从调试中粘贴的 $sql 完美运行。我疯了吗?!
最佳答案
如本页所示http://us3.php.net/manual/en/mysqli-result.fetch-row.php , $res->fetch_row() 返回带有数字索引的数组中的结果。您的结果应该在 $row[0] 中。
关于php - 简单的 mysql 查询在 phpmyadmin 中有效,但在 php 脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15148447/