我有一个PHP
代码,会运行一个Select查询来检查是否存在特定的personName
。如果它存在,我们应该返回JSON
表示,如果不存在,我们应该发送JSON
响应,说明相同的。
到目前为止我的代码;
$rst= mysql_query("select* from Person
where personname='Labby'");
while($r= mysql_fetch_array($rst) ){
// Now what ??
}
//我如何知道$rst= mysql_query("select* from Person
where personname='Labby'");
是否返回true或false?并根据它创建一个JSON响应。我怎么能这样做?
答案 0 :(得分:1)
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
来自http://php.net/manual/en/function.mysql-query.php:
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
答案 1 :(得分:1)
这里的诀窍是要意识到$r
如果找不到任何东西将会是假的,这意味着如果mysql无法找到你要找的东西,循环将退出(或永不启动)
您可以执行以下操作:
$rst= mysql_query("select* from Person
where personname='Labby'");
$return = array();
while($r= mysql_fetch_array($rst) ){
$return[] = $r;
}
if (count($return) > 0) {
echo json_encode($return);
}
else {
echo '{"success": false}'
}
显然,您需要将“true”和“false”返回值调整为对您的应用有意义的内容
答案 2 :(得分:1)
切换查询以使用COUNT(*)
并检索值,或使用mysql_num_rows()
(或mysqli或PDO等效项)。
答案 3 :(得分:1)
在处理提取之前,您应首先测试$rst
是否为NULL。
if($rst)
while($r = mysql_fetch_array)
Mysql_query文档:
返回值
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE,错误时返回FALSE。
返回的结果资源应该传递给mysql_fetch_array(),以及其他用于处理结果表的函数,以访问返回的数据。
使用mysql_num_rows()查找为SELECT语句或mysql_affected_rows()返回的行数,以找出DELETE,INSERT,REPLACE或UPDATE语句影响的行数。
如果用户没有访问查询引用的表的权限,则mysp_query()也将失败并返回FALSE。