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-15T22:02:43.380 回答
-1

看起来是由某种解析器解析的占位符。可能他们在某个框架下。

于 2010-06-15T21:34:10.983 回答