【发布时间】:2014-11-21 08:17:32
【问题描述】:
我想用 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不是空的或者/它是字符串 -
我可以返回 $value,它是我定义的字符串“clemens”。
-
在您打开
<?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部,看看它是否会产生任何结果。 -
PHP 解析错误:语法错误,意外的 'error_reporting' 编辑:只是一个错字。没有其他错误。
-
第二个查询应返回
Clemens是未定义列的形式的错误。您确定这些示例真的是您正在运行的代码吗?
标签: php mysql mysqli prepared-statement