gpt4 book ai didi

php - 使用 SET @variable=?在 mysqli 准备好的语句中

转载 作者:行者123 更新时间:2023-11-29 03:04:59 30 4
gpt4 key购买 nike

我有一个在 mysql 中使用一些变量的查询。查询看起来像这样:

SET @var1 = 1;
SET @var2 = 2;
SELECT * FROM table WHERE table.column1=@var1
AND table.column2=@var2
AND table.colum3=@var1 * @var2;

我想做一个准备好的陈述:

$sql=' SET @var1 = ?;
SET @var2 = ?;
SELECT * FROM table WHERE table.column1=@var1
AND table.column2=@var2
AND table.colum3=@var1 * @var2;'

然后只需将两个参数绑定(bind)到它。但这在 SET @var1=?; 附近给了我一个 mysql sytax 错误

当然,在这个例子中,我可以绑定(bind)三个变量并在查询之前进行计算。在我的真实查询中,有更高级的计算,我需要将同一个变量绑定(bind)到多个地方。这似乎是重复和糟糕的编码实践。

有什么解决办法吗?

最佳答案

PHP 提供开箱即用的准备好的语句和参数化查询,您可以直接使用它们。

$var1 = 1;
$var2 = 2;

$connection = new PDO($dsn, $user, $password);

$sql = 'SELECT * FROM table WHERE table.column1=:var1 AND table.column2=:var2 AND table.colum3=:varSum';
$statement = $connection->prepare($sql);

$statement->bindValue(':var1', $var1, PDO::PARAM_INT);
$statement->bindValue(':var2', $var2, PDO::PARAM_INT);
$statement->bindValue(':varSum', $var1 + $var2, PDO::PARAM_INT);
$statement->execute();

此代码只是示例,未经过测试。

关于php - 使用 SET @variable=?在 mysqli 准备好的语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17106502/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com