我想創建簡單的PDO mysql插入查詢語句以最乾淨和高效的方式。如何在PHP中使用冒號(:)和追加(,)數組值?
我的問題是,是否有任何簡單的函數可以追加和prepend數組值並將其轉換爲像implode()函數那樣的字符串呢?或者我做對了 - (請參閱我提供的上一個工作代碼)
糾正我,如果我錯了,我正在努力實現。
//key as field name value as value
$field_values=array(
"firstname"=>$fname,
"lastname"=>$lname,
"phone"=>$phone);
//field name would work fine as just a comma is appended to each array key
//i need,if there is an inline way to perform array values to start with colon and end with comma.
//this doesn't work as not comma is added inbetween
$sql="INSERT INTO student (".implode(",",array_keys($field_values).") VALUES (".implode(":",$field_values).")";
//result wrong no commas
//INSERT INTO student (firstname,lastname,phone) VALUES (:firstname:lastname:phone);
//i want this
//INSERT INTO student (firstname,lastname,phone) VALUES (:firstname,:lastname,:phone);
我不能用這個太
$sql="INSERT INTO student (".implode(",",array_keys($field_values).") VALUES (?,?,?);
我使用這個綁定
foreach($field_values as $field=>$value)
{
$dbh->bindValue(':'.$field,$value);
}
我知道我可以只寫一個字符串像:firstname,:lastname,:phone
實現這一目標,也可以與正則表達式或使用foreach循環來追加和prepend像這樣。 這將正常工作,但其漫長
$fv="";
foreach($field_values as $field=>$value)
{
$fv.=":".$field.",";
}
$fv=rtrim($fv, ",");
$sql="INSERT INTO student (".implode(",",$field_values).") VALUES (".$fv.")";
,但我想知道是否有辦法做到這一點有點像我的代碼上面使用的東西。在這種情況下數組鍵可能會改變,所以我正在尋找一種動態高效的方式。
幫幫我:) 任何幫助表示讚賞。
預先感謝您。
如果向下票選請讓我知道爲什麼嗎? :)爲什麼在這裏隨機調低了一個習慣:/ – aimme
沒有這樣的事情隨機向下投票堆棧溢出(機器人撿起它,如果它發生逆轉)。我不明白爲什麼你的問題應該被投票,所以有一個投票來平衡它 –
thanx @RobbieAverill :) – aimme