我正在尝试使用 Android 应用程序搜索数据库,但是当我使用 SQL 语法“LIKE”搜索字符串元素时,
例如:
SELECT * FROM `test123` WHERE (`name` LIKE '%A%')
它会给我一个错误:
A JSONArray text must start with '[' at character 1 of ....
但是如果我搜索:
SELECT * FROM `test123`
它会很好地工作。
<?php
mysql_connect("website.com","root","password");
mysql_select_db("test123");
$q=mysql_query($_REQUEST['sql']);
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close();
?>
最佳答案
$output = array();
while ($e = mysql_fetch_assoc($q)) {
$output[] = $e;
}
问题可能只是因为如果没有结果,$output
永远不会被定义。当您随后尝试 json_encode($output)
时,PHP 会抛出一条关于 $output
未定义的警告,这会导致最终输出如下:
PHP Notice: Undefined variable: output in ...
null
这是无效的 JSON。即使您的警告被抑制,输出也只是 null
,这不是 JSON 数组。如果您的客户需要一个数组,那么 null
会让它感到失望。
总是初始化你的变量。
关于PHP 错误无法从 Android 应用程序中检索 LIKE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936146/