簡體   English   中英

PHP MySql雙引號比單引號

[英]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.

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