如果mySQL查询返回true,则返回JSON字符串

时间:2012-06-29 19:51:13

标签: php mysql

我有一个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响应。我怎么能这样做?

4 个答案:

答案 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。