簡體   English   中英

PHP數組進入MySQL選擇查詢

[英]Php array into mysql select query

$multiples_names是一個數組。

例如, $multiple_names = ['1','2','3','4'];

我如何將其傳遞給php mysql查詢,以便可以選擇與該數組有關的所有項目。

$multiple_names = $_POST['multiple_names'];  

$multiple_names_array = implode(',', $multiple_names);

$stmt1 = $conn->prepare("SELECT * from attendance where name in (?) and today_date between ? and ? order by id ASC");

$stmt1->execute(array($multiple_names_array, $checkInDateFinal, $checkOutDateFinal));

我希望查詢結果看起來像這樣

Names   Product
1       Product A
1       Product A
2       Product B
3       Product C
3       Product C
4       Product D

嘗試許多方法,但仍然無法獲得我想要的結果。

您可以根據$multiple_names_array的大小設置占位符。 絕對不要像在代碼中那樣直接將值放入查詢中,因為(如注釋中所述)您很容易受到SQL注入的攻擊。 我還將所有值放入一個數組中。

這是您正在尋找的解決方案。 所有值都是綁定的

//Assuming the names are separated by commas, e.g "John,Jack,Jill';
$multiple_names = $_POST['multiple_names'];  
$multiple_names_array = explode(',',$multiple_names);

$placeholders = implode(', ',  array_fill(0, count($multiple_names_array), '?'));

//Put all values into one array.
$arguments = array_merge(array(), $multiple_names_array);
array_push($arguments, $checkInDateFinal);
array_push($arguments, $checkOutDateFinal);

// SELECT * FROM attendance WHERE name IN (?, ?, ?, ?, etc...) AND today_date BETWEEN ? AND ? ORDER BY id ASC
$stmt1 = $conn->prepare("SELECT * from attendance where name in ($placeholders) and today_date between ? and ? order by id ASC");
$stmt1->execute($arguments);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM