我一直在試圖弄清楚如何將搜索結果加載到表中,但不管我做什麼,我只得到一個結果,而不是數據庫中表中的2(樣本大小)行。PHP-JQuery-Ajax:如何使用mysql查詢結果(json編碼數組)的所有結果填充表
這是MySQL代碼:
if (isset($_POST['search_value'])) {
$search_value = mysqli_real_escape_string($conn, $_POST['search_value']);
$sql = "SELECT
record_id,
personal_id,
name,
status,
entry_date
FROM sample_db
WHERE EmpID = '".$search_value."'";
$res = mysqli_query($conn, $sql) or die("Error: ".mysqli_error($conn));
$data = array();
while($row = mysqli_fetch_array($res)){
$data = array(
'tb_record_id' => $row['record_id'],
'tb_personal_id' => $row['personal_id'],
'tb_name' => $row['name'],
'tb_status' => $row['status'],
'tb_entry_date' => $row['entry_date'],
);
}
echo json_encode($data);
}
我讀過幾個例子,其中陣列被構建爲$數據[] =陣列(數據放在這裏),而不是$數據=陣列(數據去這裏),但每當我嘗試$ data []時,它都不會返回任何內容,但控制檯日誌會顯示數組中的所有結果。
另外,使用dataType:'json'似乎也不工作。
我迄今試過的唯一方法是給每個<td>
一個ID。
Ajax代碼
$.ajax({
type : 'POST',
url : 'search_fetch.php',
data : data,
cache: false,
success : function(response)
{
result = jQuery.parseJSON(response);
$("#list_p_id").append(result.tb_personal_id);
$("#list_name").append(result.tb_name);
$("#list_status").append(result.tb_status);
$("#list_date").append(result.tb_entry_date);
}
});
我怎麼能填充所有可用的結果表?
此外,如果有幫助,我打開不使用數組。我只是不知道如何將查詢結果發送到ajax響應的另一種方式。
您必須使用'$ data [] = array ...'來獲取所有結果。現在你用每一個新的結果覆蓋'$ data'。 並將輸出('echo jeson_encode($ data)')移到while循環之外。 – Jeff
然後,在js中:您不需要parseJson,我認爲已經由jQuery完成了。然後使用'result [0] .tb_personal_id'來獲取你的數據。 – Jeff
你的腳本存在[SQL注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 看看發生了什麼[ Little Bobby Tables](http://bobby-tables.com/)即使 [如果你正在逃避輸入,它不安全!](http:// stackoverflow。com/questions/5741187/sql -injection-that-around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared- statement.php) – RiggsFolly