我可以直接在echo函数中使用变量而不会导致任何不兼容吗?

时间:2013-01-04 00:36:47

标签: php string variables

当我为MySQL编写查询时,通常使用这样的表单:

$column= "column_name";
$query = "SELECT * FROM table_name WHERE \"".$column."\"" = \"some_value\" ";

如果我想避免使用\“”。变量的序列,我可以使用其他形式,还是可能存在一些兼容性问题或其他一些问题?

$column= "column_name";
$query = "SELECT * FROM table_name WHERE \"$column\" = \"some_value\";

2 个答案:

答案 0 :(得分:4)

在这两种情况下你所做的都很好,但有一些注意事项:

1)你在第一种形式中所做的是使用像字符串文字这样的字符串,这意味着你可以/应该使用单引号而不是双引号,因为它们的解析速度要快得多。

 $column = 'column_name';
 $query = 'SELECT * FROM table_name WHERE ' . $column . ' = "some_value"';

你在第二个例子中所做的也很好,它只取决于你试图避免使用转义字符的原因,但如果你只是为了可读性而做,那你有什么很好。

值得注意的是,处理查询的方式正在被弃用,你应该看看PDO并以这种方式注入你的值。

按上方评论 - 从列中删除“

答案 1 :(得分:2)

是的,你可以。

  • 用双引号分隔的字符串由PHP解析器解释。
  • 确保正确识别变量,将其放入大括号

示例

$variable = 1;

$array = array( 1,2 );

$object = new stdclass();
$object->member = 1;

$string = "You can basically put every kind of PHP variable into the string. This can be a simple variable {$variable}, an array {$array[0]} or an object member {$object->member} even object methods.";

如果您希望PHP在没有解释的情况下从字面上取$variable,请将字符串放入单引号中。

我真正想用于查询的另一种方法是heredoc符号

$sqlQuery = <<< EOQ
    SELECT 
           "field"
    FROM
           "table"
    WHERE
           "id" = '{$escapedValue}'
EOQ;

再补充一点:

在SQL中,您应该使用单引号分隔值,并使用双引号(ANSI兼容)或后面勾选```

来标识表名和字段名等标识符