gpt4 book ai didi

php - sql无法通过mysqli_multi_query执行

转载 作者:行者123 更新时间:2023-11-29 17:30:44 25 4
gpt4 key购买 nike

我刚开始使用 mysqli_multi_query,并且没有在 php 上花费大量时间。当我直接在数据库客户端(phpMyAdmin)中应用它时,我的 sql 成功,但它不会从我的 php 代码中执行。该函数的返回旨在成为一个由 2 个 SELECT 语句的结果填充的 2 项数组,但它总是返回空。 (注:连接成功;$con在别处定义。)

function claimItem($key){
//remove expiry, decrement quantity available, send Kate & Sasha an email.
global $con;
$sql = "SELECT A.name, B.name, C.quantity, B.id FROM invitees A, items B, invitees_items C WHERE C.activation_key = '$key' AND C.items_id = B.id AND C.invitees_id = A.id; SELECT @qnt := quantity, @itm := items_id FROM invitees_items WHERE `activation_key` = '$key'; UPDATE items SET num_available = GREATEST(num_available - @qnt, 0) WHERE id = @itm; UPDATE invitees_items SET expiry = null, activation_key = null WHERE activation_key = '$key';";

$multiArr = array(array(), array());

if (mysqli_multi_query($con,$sql)){
$qcount = 0;
do
{
// Store first result set
$result=mysqli_store_result($con);
// Fetch one and one row
while ($row=mysqli_fetch_row($result))
{
array_push($multiArr[$qcount], $row);
}
// Free result set
mysqli_free_result($result);

$qcount++;
}
while (mysqli_next_result($con));
}
else {
return "failure";
}

mysqli_close($con);
return $multiArr;
}

最佳答案

变量名称存在一些问题。

有一个变量 $multiArr 已初始化,但直到最后返回时才被引用。这解释了为什么返回空数组。 (有一个名为 $multiArray 的不同变量在函数体中被引用)。

还有一个已初始化并引用的变量$qcount。但该变量不会增加。相反,名为 $count 的不同变量会递增。

<小时/>

我建议在声明 mysqli_multi_query 存在问题之前先将其消除。

该代码似乎使用了一种已知易受 SQL 注入(inject)攻击的模式。使用 mysqli_multi_query 很容易遭到恶意利用。

关于php - sql无法通过mysqli_multi_query执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684442/

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