gpt4 book ai didi

PHP Mysqli Query 从表数据查询执行

转载 作者:行者123 更新时间:2023-12-03 23:00:15 27 4
gpt4 key购买 nike

我有保存在表中的 SQL 查询。

tbl_query

SELECT SUM(simpanan_wajib) AS TOTAL FROM tb_simpanan WHERE badgeid_fk = '$getBadgeID'

然后在 PHP 代码上:

$query = mysqli_query($con, "SELECT * FROM tbl_query");
while($data = mysqli_fetch_array($query))
{
//SELECT SUM(simpanan_wajib) AS TOTAL FROM tb_simpanan WHERE badgeid_fk = '$getBadgeID'
$getQuery = $data['sql_query'];

$qTotal = mysqli_query($con, $getQuery);
$dTotal = mysqli_fetch_array($qTotal);

echo $dTotal['TOTAL'];
}

当我尝试运行该代码时,它显示总计结果为 0。但是,如果我在查询数据上删除此 WHERE badidid_fk = '$getBadgeID',则结果正常,而不是 0。

即使存在变量'$getBadgeID',如何继续执行查询

最佳答案

PHP 将此变量视为字符串,这就是生成此查询的结果的原因

SELECT SUM(simpanan_wajib) AS TOTAL FROM tb_simpanan WHERE badgeid_fk = '$getBadgeID' // its not converting your variable with 150502

在这里您可以使用备用名称,也可以与分隔符一起使用,例如:

您当前的查询是:

SELECT SUM(simpanan_wajib) AS TOTAL FROM tb_simpanan WHERE badgeid_fk = '$getBadgeID'

更改您的查询:

SELECT SUM(simpanan_wajib) AS TOTAL FROM tb_simpanan WHERE badgeid_fk = ':getBadgeID'

现在,您需要使用 str_replace 将分隔符替换为变量,例如:

while($data = mysqli_fetch_array($query))
{
$getQuery = str_replace(":getBadgeID", $getBadgeID , $data['sql_query']);
}

为什么我在这里使用分隔符,因为你的变量 $getBadgeID 在你的 php 脚本中已经定义了值,并且它不是动态的。

在我们的聊天对话中,@executable 建议使用准备好的语句的另一种解决方案。

编辑:

根据与@Bananaapple的讨论,我为 future 的访问者添加此评论,Prepared Statement是另一种更安全的解决方案,如果您想避免SQL注入(inject),请选择Prepared Statement。

关于PHP Mysqli Query 从表数据查询执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236382/

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