1
我有下面的函數創建一個插入查詢的SQL刪除字符串的一部分。不過,我想返回包含SQL命令LAST_INSERT_ID()的查詢。 當通過函數運行時,添加了引號,因此它返回爲'LAST_INSERT_ID()'PHP從另一個字符串
有沒有簡單的方法來刪除引號,而不從其他項目中刪除引號?
任何意見讚賞。 謝謝。
我有下面的函數創建一個插入查詢的SQL刪除字符串的一部分。不過,我想返回包含SQL命令LAST_INSERT_ID()的查詢。 當通過函數運行時,添加了引號,因此它返回爲'LAST_INSERT_ID()'PHP從另一個字符串
有沒有簡單的方法來刪除引號,而不從其他項目中刪除引號?
任何意見讚賞。 謝謝。
$sql = str_replace("'LAST_INSERT_ID()'", 'LAST_INSERT_ID()', $sql);
問題是您的輸入參數沒有在數值和函數之間做出區別。你需要找到一種方法來使你的功能顯而易見。 我希望你用你的功能是這樣的:
insertQuery(array('name'=>'John', 'age' => 43), 'person');
怎麼是這樣的:
insertQuery(
array(
'name' => 'John',
'age' => 43,
'prevId' => array('LAST_INSERT_ID()')
), 'person');
function insertQuery($data, $table) {
$keys = array_keys($data);
$sql = "INSERT INTO `" . $table . "` (`" . implode('`, `', $keys) . "`) VALUES ";
$values = array_values($data);
$sqlparams = array();
foreach ($values as $val) {
if (is_array($val)) {
$val = $val[0];
}
else {
# Escape and quote
$val = '"' . mysql_real_escape_string($val) . '"';
}
$sqlparams[] = $val;
}
$sql .= "(" . implode(", ", $sqlparams) . ");";
return $sql;
}
我還包括兩臺錯誤修正:
mysql_real_escape_string
報價永遠是錯的。您的參數中的引號會混淆您的整個SQL查詢。
當OP想要使用其他功能時,這是如何工作的? – 2009-11-30 12:06:54
對不起,作爲一個屁股,但整個問題反映了糟糕的設計決策,隨着時間的推移會變得越來越糟糕。他的六行代碼也包含至少兩個錯誤。 – 2009-11-30 12:22:48