PHP错误无法从android应用程序检索LIKE语句

PHP错误无法从android应用程序检索LIKE语句,php,android,mysql,sql-like,Php,Android,Mysql,Sql Like,我试图用android应用程序搜索数据库,但当我搜索SQL语法为“LIKE”的字符串元素时 例如: SELECT * FROM `test123` WHERE (`name` LIKE '%A%') 这会给我一个错误: JSONArray文本必须在…的字符1处以“[”开头 但如果我搜索: SELECT * FROM `test123` 它会很好用的 <?php mysql_connect("website.com","root","password"); mysql_select_d

我试图用android应用程序搜索数据库,但当我搜索SQL语法为“LIKE”的字符串元素时

例如:

SELECT * FROM `test123` WHERE (`name` LIKE '%A%')
这会给我一个错误:

JSONArray文本必须在…的字符1处以“[”开头

但如果我搜索:

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();
?>

它应该是

"SELECT * FROM test123 WHERE name LIKE '%A%'"

我认为这可以很好地从
test123
name
)中选择*,其中(
name
像“%A%”)

当我使用
php-json\u-encode
时,它总是返回一个
JSONObject
,而不是
JSONArray
。尝试将原始结果打印到Logcat,看看它是什么形式

$output = array();
while ($e = mysql_fetch_assoc($q)) {
    $output[] = $e;
}
问题可能只是如果没有结果,
$output
永远不会定义。当您尝试
json\u encode($output)
时,PHP会抛出一个关于
$output
未定义的警告,这会导致最终输出,如:

PHP Notice:  Undefined variable: output in ...
null
这是无效的JSON。即使您的警告被抑制,输出也只是
null
,这不是JSON数组。如果您的客户端需要数组,那么
null
会让它失望


始终初始化变量。

我真诚希望
mysql\u查询($\u请求['sql'])
仅用于测试目的…@user870077您能否从Android应用程序端包含一些代码。我很确定问题存在。但这仅在查询返回至少1行时有效。OP的代码还有一个基本缺陷;当查询未返回任何行时,它返回格式错误的JSON。
JSON\u encode指定对象或关联数组时,ode>将返回一个对象。带有数字键的数组将返回一个数组。使用选项
json\u-encode
调用
json\u-FORCE\u-object
将始终返回一个对象。感谢您的澄清-我始终使用关联数组,这很有意义。