这是什么意思?

Maw*_*awg 7 php prepared-statement

我在google搜索时在一些代码示例中找到了这个:

$sql = 'INSERT INTO users (username,passwordHash) VALUES (?,?)';
Run Code Online (Sandbox Code Playgroud)

这对我来说是新的,但我猜它是一种替代方法,等同于

$sql = "INSERT INTO users (username,passwordHash) VALUES ($username,$passwordHash)";` 
Run Code Online (Sandbox Code Playgroud)

要么

$sql = 'INSERT INTO users (username,passwordHash) VALUES (' . $username . ',' . $passwordHash . ')';`
Run Code Online (Sandbox Code Playgroud)

那是对的吗?它是一个真正的PHP语法,还是他只是想简化他的例子?


感谢您的反馈,伙计们

Sam*_*son 12

这在准备好的陈述中非常常见.它?仅用作占位符,如下面的PHP文档所示:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

  • 此外,很少需要繁琐的` - > bindParam`列表.可以使用` - > execute(array($ name,$ value))`调用简单地推送所有参数. (6认同)