我需要从我的数据库中检索一个可以具有相同名称的用户列表。我遇到了麻烦,我将查询结果转换为json。
如果我只检索一个结果,代码就可以了,但是自从我开始使用LIKE
后,它就开始失败了。
php代码:
<?php
$q = $_POST['q'];
require('connect.php');
$i = 0;
$sql="SELECT `_nome`, `_endereco`, `_telefone`, `_imgstring`, `_dtAcesso`, `_descricao`, `_fkIdUser` FROM `tbvisitantes` WHERE _nome LIKE CONCAT ('%',?,'%')";
$stmt= $conn->prepare($sql);
$stmt->bind_param('s', $q);
if ($stmt){
$stmt->execute();
$stmt->bind_result($rName, $rEndereco, $rTelefone, $rImgString, $rDtAcesso, $rDescricao, $rFkIdUser);
while ($row = $stmt->fetch_array()){
$json_output = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);
echo json_encode($json_output);
}
$stmt->close();
}
mysqli_close($conn);
?>
收到结果的脚本:
$.ajax({
url: 'getuser.php',
type: 'POST',
data: {q: str},
success: function(jsonString){
$vIndex = '<input class="vInput"></input>';
$($cadContent).appendTo('#cadContent');
var json = $.parseJSON(jsonString);
var jsonLenght = Object.keys(jsonString).length;
$.each(json, function(index, el) {
$($vIndex).attr('id', index).val(el).appendTo('#txtHint');
});
}
})
.done(function() {
console.log("success");
})
.fail(function(xhr) {
alert("An error ocurred:" + xhr.status + xhr.statusText);
console.log('failed');
})
.always(function() {
console.log("complete");
});
}
我认为我的问题可以通过构建我的JSON,但我现在不知道如何修复它。
答案 0 :(得分:0)
您需要将行合并为一个JSON数组:
if ($stmt){
$stmt->execute();
$stmt->bind_result($rName, $rEndereco, $rTelefone, $rImgString, $rDtAcesso, $rDescricao, $rFkIdUser);
$rows = array();
while ($row = $stmt->fetch_array()){
$json_output = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);
$rows[] = $json_output;
}
echo json_encode($rows);
}
答案 1 :(得分:0)
您无法在json中回显多重响应。您必须将响应组合到一个数组中,然后您必须回应响应。
以下代码段对您有帮助,
服务器页面:
while ($row = $stmt->fetch_array()){
$json_output[] = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);
}
echo json_encode($json_output);
在Ajax页面中:
// your success callback handler
function handler( response ) {
// execute code for object 1
doStuff(response[0] );
// execute code for object 2
doOtherStuff( response[1] );
}