0

我有一个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

4 回答 4

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'];
 }
于 2012-06-29T19:56:00.200 回答
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”返回值调整为对您的应用有意义的值

于 2012-06-29T19:56:01.280 回答
1

切换查询以使用COUNT(*)和检索值,或使用mysql_num_rows()(或 mysqli 或 PDO 等效项)。

于 2012-06-29T19:56:08.173 回答
1

在处理 fetch 之前,您应该$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 语句的影响。

如果用户无权访问查询引用的表,mysql_query() 也会失败并返回 FALSE。

于 2012-06-29T19:57:53.370 回答