PHP MySQL查询不返回所有结果
Posted
技术标签:
【中文标题】PHP MySQL查询不返回所有结果【英文标题】:PHP MySQL query not returning all results 【发布时间】:2015-06-11 22:06:39 【问题描述】:我在 php 中的以下 SQL 查询不能完全工作。结果仅包含第一行。该查询在 PHPMyadmin 中运行良好,它会返回所有结果。
$select = "SELECT a.setID, a.setName, a.setPrimaryLanguage, a.setSecondaryLanguage
FROM Person_Set ps, Album a
WHERE ps.Person_username = :username
AND ps.Set_setID = a.setID";
try
$stmt = $dbh->prepare($select, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$stmt->bindValue(":username", $username, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch();
echo json_encode($result);
unset($stmt);
catch (Exception $e)
echo 'Exception : ' . $e->getMessage() . "\n";
此外,如果我更改选择条件以搜索包含特定字符串的行,则结果为空(返回“false”)。如下查询:
$select = "SELECT a.setID, a.setName, a.setPrimaryLanguage, a.setSecondaryLanguage
FROM Album a, Set_Card s
WHERE a.setName LIKE '%:searchText%'
AND a.setID = s.Set_setID
GROUP BY a.setID";
我一直在尝试不同的方式来连接 mysql 并获得结果,比如
$results = $mysqli->query($query);
而不是使用 PDO。但是,结果仍然相同。谁能帮忙指出我的错误在哪里?非常感谢!
【问题讨论】:
尝试$result = $stmt->fetchAll();
而不是$result = $stmt->fetch();
另外,命名占位符'%:searchText%'
不需要加引号
【参考方案1】:
PDOStatement::fetch — 从结果集中获取下一行
因此,当您执行 fetch 时,它会获取第一行,除非您使用将光标更改为下一条记录的循环来执行此操作。
您可以使用fetchAll
方法获取所有记录
http://php.net/manual/en/pdostatement.fetch.php
http://php.net/manual/en/pdostatement.fetchall.php
【讨论】:
【参考方案2】:PDOStatement::fetch 获取单行并将指针移动到下一行。您将使用$results = $stmt->fetchAll()
来检索所有结果或这样的循环:
while ($result = $stmt->fetch())
echo json_encode($result);
【讨论】:
【参考方案3】:您好,您使用的是仅获取一行的 fetch() 函数,而不是使用此代码,
$select = "SELECT a.setID, a.setName, a.setPrimaryLanguage, a.setSecondaryLanguage
FROM Person_Set ps, Album a
WHERE ps.Person_username = :username
AND ps.Set_setID = a.setID";
try
$stmt = $dbh->prepare($select, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$stmt->bindValue(":username", $username, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchall();
echo json_encode($result);
unset($stmt);
catch (Exception $e)
echo 'Exception : ' . $e->getMessage() . "\n";
【讨论】:
以上是关于PHP MySQL查询不返回所有结果的主要内容,如果未能解决你的问题,请参考以下文章
PHP/mysql:使用数组查询 MySQL 并在数组中获取结果