2012-06-15 77 views
1

讓我們假設我有所有這些已經提供的:如何在PHP中使用未知數量的參數執行插入查詢?

  • 包含在表中的列的名稱數組名稱
  • 包含我要插入值A相應的數組放入表格中,以及這些值的類型。

我通常會做這樣的

$stmt = mysqli_stmt_init($mysqli); 
if (mysqli_stmt_prepare($stmt, 'INSERT INTO `Table` (columns) VALUES (values) ')) { 
    mysqli_stmt_bind_param($stmt, /* types */, /* values */); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_close($stmt); 
} 

查詢,但我無法弄清楚如何使這一更普遍的,這樣我可以在我的專欄名稱,值和類型的飼料,和執行查詢。

這樣做的最好方法是什麼?我寧願不必爲此安裝一個庫。

+0

我已經成功 - 鍵是列名,值是,呃,值。 –

回答

5

那麼對於列名稱,您只需執行列數組的implode並將sprintf它寫入查詢。

對於您還可以implode他們的類型字符串,並將它們送入mysqli_stmt_bind_param

對於(使用call_user_func_array),你必須做一些棘手的操作值:使用參數的關聯數組

$args = array(); // to be put into call_user_func_array 

$args[] =& $stmt; // because the statement HAS TO be by reference. 
$args[] = implode("", $types); 

foreach($values as $value){ 
    $args[] = $value; 
} 

call_user_func_array("mysqli_stmt_bind_param", $args); 
+0

我試過了,但是我得到一個錯誤,說'bind_param'在預期引用時收到了一個值作爲第二個參數。 –

+0

@PeterOlson ahhh對不起,我忘了'&'現在試試:-) – Neal

+0

@PeterOlson它現在對你有用嗎? – Neal

相關問題