1

私はプログラマーによるこのSQLを持っています:

$sql = "  
   INSERT INTO  
    `{$database}`.`table`  
   (  
    `my_id`,  
    `xType`,  
    `subType`,  
    `recordID`,  
    `textarea`  
   )  
   VALUES  
   (  
    {$my_id},  
    ?xType,  
    ?subType,  
    {$recordID},  
    ?areaText  
   ) ";  

私の質問は、なぜ彼は?値の前に使用しているのですか?どのような値が入ってくるかをどのように確認できますか?私がやったechoとそれは?xTypeとして表示され?xTypeます。値はありません。何ですか?SQLの略ですか?

4

4 に答える 4

9

それは私には名前付きパラメーターのように見えます。

于 2010-06-15T21:32:48.397 に答える
1

この場合、John Weldonは正しいですが、以下のようなSQLを見たことがあります。値のプレースホルダーであることを意味します。SQLには、SQL内の?の数に等しいパラメーターが付随しています。その場合、それはパラメータから値を引き出してそれをエスケープすることを意味します。

INSERT INTO  
    `{$database}`.`table`  
   (  
    `my_id`,  
    `xType`,  
    `subType`,  
    `recordID`,  
    `textarea`  
   )  
   VALUES  
   (  
    ?,  
    ?,  
    ?,  
    ?,  
    ? 
   ) ";  
于 2010-06-15T22:01:32.273 に答える
-1

ある種のパーサーによって解析されるプレースホルダーのように見えます。おそらく、それらは何らかのフレームワークの下にあります。

于 2010-06-15T21:34:10.983 に答える
-1

別のクレイジーなアイデアがあります-あなたは他の誰かのコードを維持していますよね?それは実際に動作/実行されますか?そうでない場合は、そのパラメーターまたはパラメーターの名前がわからなかったため、疑問符を付けましたか?コンパイルされないものを入れることがあります。それは、後で戻ってそれを理解することを余儀なくされることがわかっているからです(忘れないでください)。

于 2010-06-15T22:02:43.380 に答える