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

文字列内に変数を入れるための正しい形式が1つあると本当に言えるかどうかはわかりませんが、最も柔軟で確実に機能するのは次のとおりです。

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

変数を文字列内に配置する代わりに、この構文を使用することには少なくとも2つの利点があります。

さまざまな誤解

1)変数を文字列内に配置する場合、変数を他のテキストと混合する必要がある場合は、おそらく問題が発生します。

例:

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

変数は何ですか?それは$variableですか?$ 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 に答える