使用mysqli求和(?)会在准备好和bind_param时返回0或错误的结果

时间:2014-09-26 10:33:14

标签: php mysql mysqli prepared-statement

我想在mysql中使用php与mysqli和prepared语句总结一行。当我使用预准备语句并绑定param时,它返回错误的结果(大约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注入。

感谢您的帮助。 德棉

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码,将查询保留为使用查询

下方的代码
$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);
    }