1

哪个是正确的语法?

$current_renewal_date = $wpdb->get_results(
                    "
                    SELECT expiry_date
                    FROM bid_tag
                    WHERE id = $renewal_tag_id
                    LIMIT 1
                    "
                );

或者

$current_renewal_date = $wpdb->get_results(
                    "
                    SELECT expiry_date
                    FROM bid_tag
                    WHERE id = {$renewal_tag_id}
                    LIMIT 1
                    "
                );
4

4 回答 4

1

它们都是正确的*和等价的。当您只是插入变量而不访问数组中的元素时,大括号是可选的。

* 请使用参数化查询

于 2012-12-27T19:22:37.560 回答
1

两者都是正确的。后者只是用来避免歧义,比如如果你想引用$foo而不是$foobar

"{$foo}bar"
于 2012-12-27T19:23:17.090 回答
0

我不知道您是否真的可以说有一个正确的形式可以将变量放入字符串中,但最灵活且最有效的方法是:

$current_renewal_date = $wpdb->get_results(
                    "
                    SELECT expiry_date
                    FROM bid_tag
                    WHERE id = ".$renewal_tag_id."
                    LIMIT 1
                    "
                );

使用这种语法而不是仅仅将变量放在字符串中至少有两个好处。

变量误解

1)当您将变量放入字符串中时,如果您需要将变量与其他文本混合使用,您可能会遇到问题。

例子:

$string = "My ID is AB$variableCD";

什么是变量?它是 $ 变量吗?是 $variableC 吗?还是 $variableCD?您使用的语法对此有多种解释。当你这样做时,这不会发生

$string = "My ID is AB".$variable."CD";

数组使用

2)当您在字符串中混合使用具有数组索引的变量时,您不能轻易使用它们

例子:

$string = "The largest country is $options[countries in the world][$index]";

会得到你 *PHP 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,期待 ']'*

虽然使用以下将完美地工作:

$string = "The largest country is ".$options['countries in the world'][$index];

还有一点与语法无关的额外内容...

3) 实际上有一个性能优势,那就是使用 ' 而不是 " 为您的字符串的可能性。使用 ' 使字符串文字,也就是说,它不会被解析,这会在处理大字符串时提高性能.

$string = 'hello';

代替

$string = "hello";
于 2012-12-27T19:23:02.130 回答
0

他们都工作。首选方法是使用准备好的语句和绑定参数。

于 2012-12-27T19:23:42.023 回答