这些行来自Web服务器上的php函数,客户端是ios应用程序, 我在result2查询中收到错误
$result = query("SELECT field1 FROM table1 WHERE field2='%s' limit 1", $value);
$row = mysql_fetch_array($result);
$result2 = query("SELECT field2 FROM table1 WHERE field3='%s' limit 1", $row['field1']);
在Xcode上我得到错误(在json中):
{
error = "The operation couldn't be completed. (Cocoa error 3840.)";
}
这是函数查询的定义
//executes a given sql query with the params and returns an array as result
function query() {
global $link;
$debug = false;
//get the sql query
$args = func_get_args();
$sql = array_shift($args);
//secure the input
for ($i=0;$i<count($args);$i++) {
$args[$i] = urldecode($args[$i]);
$args[$i] = mysqli_real_escape_string($link, $args[$i]);
}
//build the final query
$sql = vsprintf($sql, $args);
if ($debug) print $sql;
//execute and fetch the results
$result = mysqli_query($link, $sql);
if (mysqli_errno($link)==0 && $result) {
$rows = array();
if ($result!==true)
while ($d = mysqli_fetch_assoc($result)) {
array_push($rows,$d);
}
//return json
return array('result'=>$rows);
} else {
//error
return array('error'=>'Database error');
}
}
该查询出了什么问题?
感谢
答案 0 :(得分:1)
您正在mysqli_
函数中使用query()
函数,但尝试使用mysql_fetch_array()
来获取结果。您需要使用:mysqli_fetch_array()
http://www.php.net/manual/en/mysqli-result.fetch-array.php
实际上,您的query()
功能似乎适合您。您根本不需要使用任何功能。请查看query()
函数的此部分:
$rows = array();
if ($result!==true)
while ($d = mysqli_fetch_assoc($result)) {
array_push($rows,$d);
}
//return json
return array('result'=>$rows);
然而不确定为什么它说它是json因为它只是一个普通的数组而不是json数组。所以你应该在你的代码中使用它:
$row = $result['result'][0];
这将获得第一行。
答案 1 :(得分:0)
也许你必须 json_encode 结果?
//return json
return json_encode(array('result'=>$rows));