Drupal查询中大括号和%s以及%f和%d的含义是什么?

时间:2016-03-02 17:47:36

标签: php postgresql drupal

我必须检查来自Web应用程序的脚本(基于PHP,内置Drupal 6,但我认为这只是一个不特定于drupal 6的常用脚本,cmiiw)。但我还在了解它。

以下是代码:

db_query("INSERT INTO {data} ( code, nominal, desc, proofnumber, uid) 
            VALUES ('%s', %f,'%s', '%s', %d)",  $code, $nominal, $desc, $proofnumber, $uid);

我的问题:

  1. 花括号是什么意思?
  2. '%s'%d%f的含义是什么?
  3. 为什么它不是这样写的:

    INSERT INTO data (code, nominal, desc, proofnumber, uid) 
        VALUES ($code, $nominal, $desc, $proofnumber, $uid)`?
    

1 个答案:

答案 0 :(得分:3)

  1. 用括号表示表名的正确前缀,因此{data}将变为myapp_datasee db_prefix_tables for more
  2. %s%d和其他人sprintf format specifiers,您可以在db_query docs中找到一些示例。
  3. 所有这些都需要以DB无关的方式(#1)实现查询,并缓解SQL注入(#2)。