PHP错误无法从android应用程序检索LIKE语句
我试图用android应用程序搜索数据库,但当我搜索SQL语法为“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
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
将始终返回一个对象。感谢您的澄清-我始终使用关联数组,这很有意义。