PHP MySql双引号比单引号

时间:2013-06-12 20:07:24

标签: php mysql

我正在阅读一本关于PHP的书,并看到了用于插入记录的代码。我不理解三元运算符的默认情况下的特定表达式。更具体地说:

"'$v',"

作者是否使用单引号(')犯了错误,他真正想要的是反引号(`)来引用一个特殊的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',";
    }
}

4 个答案:

答案 0 :(得分:1)

双引号表示它是一个字符串,单引号是字符串的一部分。 内部双引号变量被计算,因此字符串将包含变量'vValue'而不是'$ v'的值

答案 1 :(得分:1)

单引号包装你的价值。如果值是String,那很重要。

如果不包装String-value,则每个单词都将被解释为保留的SQL单词。

顺便说一句,我建议使用PDO处理SQL内容:http://www.php.net/manual/en/book.pdo.php

答案 2 :(得分:0)

请注意" "中使用的双引号(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',";
}

这几乎是正确的...... 您可以了解有关三元运算符here ::

的更多信息

答案 3 :(得分:0)

这一行:

$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...')