簡體   English   中英

從PHP數組構建PDO MYSQL查詢?

[英]Building a PDO MYSQL query from a php arrays?

我正在嘗試從到目前為止的數組值構建查詢,

$itemPlus = $_POST['itemPlus'];
$query = implode(', ', array_map(function($items) {return $items . ' = ' . $items . '-?';}, $items));
// $query = 'hats = hats-?, gloves = gloves-?, scarfs = scarfs-?'
$params = implode(', ', $userCost);
// $params = '10, 7, 9'
$q = $dbc -> prepare("UPDATE items SET " . $query . ", $itemPlus = $itemPlus+1 WHERE id = ?");
$q -> execute(array($params, $account['id']));

它不起作用,這是我第一次嘗試這樣做,並且由於不起作用,我顯然做錯了!!

謝謝

由於$params是一$params ,因此無法將其與$account['id']一起放入數組。 而是使用創建它的數組$userCost

// Start with the $userCost array...
$paramArr = $userCost;
// Add $account['id'] to it
$paramArr[] = $account['id'];
// And pass that whole array to execute()
$q -> execute($paramArr);

由於$itemPlus來自$_POST ,因此您需要確保輸入有效。 由於它指的是列名,因此建議為此使用白名單:

// Check against an array of possible column names:
if (!in_array($_POST['itemPlus'], array('col1','col2','col3','col4',...)) {
   // $_POST['itemPlus'] is NOT VALID
   // Don't proceed...
}

您的問題(其中一個)在這里:

$q -> execute(array($params, $account['id']));

$params變量是一個逗號分隔的字符串:

// $params = '10, 7, 9'

您想要將參數和值的關聯數組傳遞給execute()方法,如下所示:

$params = array(
    'hats-?' => 10,
    'gloves-?' => 7,
    'scarves-?' => 9
);

// ...

$q->execute($params);

暫無
暫無

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

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