[英]PHP MySql double quotes than single quotes
我正在讀一本關於PHP的書,看到了這段代碼用於插入記錄。 我不理解三元運算符的默認情況下的特定表達式。 進一步來說:
"'$v',"
作者是否使用單引號(')犯了錯誤,他真正的意思是反引號(`)來引用一個soecial mysql表達式? 為什么要在變量上使用單引號然后雙引號?
根據mysql文檔:
“標識符引號字符是反引號(”`“):” http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
public function insertRecords($table, $data){
//setup some variables for fields and values
$fields = "";
$values = "";
//populate them
foreach($data as $f => $v){
$fields .= "`$f`,";
$values .= (is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
}
}
雙引號表示它是一個字符串,單引號是字符串的一部分。 內部雙引號變量被計算,因此字符串將包含變量'vValue'而不是'$ v'的值
單引號包裝你的價值。 如果值是String,則很重要。
如果不包裝String-value,則每個單詞都將被解釋為保留的SQL單詞。
順便說一句,我建議使用PDO來處理SQL的東西: http : //www.php.net/manual/en/book.pdo.php
請注意(is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
使用的雙引號" "
(is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
(is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
是指三元運算中的價值。
`$values.=((is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";`
同意說:
if((is_numeric($v) && (intval($v) == $v)) {
$values.= $v . ",";
}else{
$values.="'$v',";
}
這一行:
$values .= (is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
查看$ v的值是否為數字。 如果是數字,則將該數字后跟逗號(,)附加到$ values的值。 如果它不是數字,那么它將值包裝在單引號后跟一個逗號並將其附加到$ values。
基本上,當完成所有操作時,您確保您的語句看起來像這樣:
insert into sometable (col1, col2, col3, col4) values (0, 'some string', 'other string', 67, 'etc...')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.