尝试使用json从ios设备通过php脚本向服务器发送少量文件名。
如果我使用的话,我可以发送文件名并收回它们:
$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
$decoded = json_decode($jsonInput,true);
sendResponse(200, json_encode($decoded));
我从ios发送了一个json字符串,如= ["sample.pdf","sample-1.pdf"]
sendResponse 200在ios设备中,证明我的发送和接收方法工作=
(
"sample.pdf",
"sample-1.pdf"
)
但是如果我将代码更改为以下并尝试运行查询,我总是得到Query failed
$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
$decoded = json_decode($jsonInput,true);
var_dump($decoded);
$names = join("', '",$decoded);
var_dump($names);
$sql = new mysqli($config['localhost'], $config['xxx'], $config['xxxx'], $config['xxxxx']);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit;
}
$query = "SELECT * FROM FILES WHERE name IN ('$names')";
$result = $sql->query($query);
if (!$result) {
var_dump($result);
//printf("Query failed: %s\n", $mysqli->error);
//sendResponse(417, json_encode("Query failed:"));
sendResponse(417, json_encode($decoded));
exit;
}
$rows = array();
while($row = $result->fetch_row()) {
$rows[]=$row;
}
sendResponse(200, json_encode($decoded));
$result->close();
$sql->close();
从上面的代码我总是得到Query failed
回复,但真正奇怪的是我也得到NULL
或sendResponse(417, json_encode($decoded))
sendResponse(200, json_encode($decoded));
回复
为什么我在查询后得到null
,毕竟我没有更改$decode
变量?
为什么查询失败?
修改::::: 的
删除删除vardumbs以获取正确的json结果并将连接代码更改为此解决了问题,我知道可以获得正确的查询结果。
$sql = new mysqli('localhost', 'user', 'password', 'database');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit;
}
答案 0 :(得分:1)
我看到你正在混合mysqli的语法。
$sql = new mysqli($config['localhost'], $config['xxx'], $config['xxxx'], $config['xxxxx']);
if ($mysqli->connect_error) {
您应该使用面向对象的表示法来对应使用new。另外,你如何编写配置似乎有点奇怪,你确定配置的内容是否正确获取?