在准备和bind_param时,与mysqli的Sum(?)返回0或错误的结果


Sum(?) with mysqli returns 0 or wrong result when prepared and bind_param

我想用php和mysqli以及准备好的语句来总结Mysql中的一行。当我使用准备好的语句并绑定参数时,它会返回错误的结果(大约200…):

$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer=?");
$value = "clemens";
if(!$stmt->bind_param("s", $value)){
    $response["errormessage"] = $stmt->error;       
    }
    $stmt->execute();
    $stmt->bind_result($sum);
    $stmt->fetch();
    $response["debtsan" . $value] = $sum;
    $stmt->close();

但当我在没有bind_param的情况下使用它时,它会返回正确的数量:

$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer = Clemens");
    $stmt->execute();
    $stmt->bind_result($sum);
    $stmt->fetch();
    $response["debtsantest" . $value] = $sum;
    $stmt->close();

我没有得到任何错误,没有绑定参数,它正在工作。但是我想使用bind_param来避免sql注入。

谢谢你的帮助。除雾

您可以尝试使用此代码吗?让您的查询保持原样,在查询下面使用此代码

$value = "clemens";
    if($stmt === false) {
        $response["errormessage"] =$mysqli->error;       
    }
    $stmt->bind_param("s", $value);
    $stmt->execute();
    $stmt->bind_result($sum);
    while ($stmt->fetch()) {
       printf("%i'n", $sum);
    }