1美元和2美元是什么意思?

时间:2013-04-02 01:23:00

标签: php sql

这行代码中的$ 1和$ 2是什么意思?他们是变数吗?但那么如何在字符串中使用它们呢?

$query = "select * from php_project.student where student_num=$1 and student_pass=$2";

编辑:接下来的几行:

        $stmt = pg_prepare($dbconn,"ps",$query);
        $result = pg_execute($dbconn,"ps",array($studentnum,$password));
        if (!$result){
            die("error in SQL query:".pg_last_error());
        }

1 个答案:

答案 0 :(得分:7)

$ 1和$ 2不是变量。它们被用作字符串中的占位符。

在PHP $(数字第一)中不是变量。亲自尝试一下:

$1 = "bob";
>> Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in php shell code on line 1

所以“$ 1”实际上是一个字母“1”。

您可以使用str_replace,并获取此信息:

php > echo str_replace("$1", "'Bob'", $query);
>> select * from php_project.student where student_num='Bob' and student_pass=$2

<强>更新

根据您的更新,pg_prepare实际上是这样说的:

  

如果使用任何参数,它们在查询中称为$ 1,   2美元等等。

因此,在您的情况下,array($studentnum,$password)基本上用'$ studentnum'替换$ 1,在查询中用'$ password'替换$ 2,但也正确地转义值以防止SQL注入攻击。

http://php.net/manual/en/function.pg-prepare.php