我想知道是否可以在准备好的mysql语句中为变量使用数学运算符?我已经写了下面的内容(尽管它不起作用,但我收到了“在非对象上调用成员函数bind_param()的信息”)。
$result = $mysqli->prepare("SELECT t.column FROM table t WHERE t.value ( ? ) ( ? );");
$result->bind_param('ss', $operator, $value);
$result->execute();
我将它与if语句一起使用,该语句根据是否在大于或小于value上选中了单选按钮来更改运算符的值。像下面。
if (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Above"){
$operator = ">";
}
elseif (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Below"){
$operator = "<";
}
elseif (!isset($_POST["abovebelow"])){
$operator = "=";
}
最佳答案
您的查询字符串中只有2个变量,但您绑定了3个值,因此首先就不合适了,那么您不应该这样添加运算符,最好这样做:
if (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Above"){
$operator = ">";
}
elseif (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Below"){
$operator = "<";
}
elseif (!isset($_POST["abovebelow"])){
$operator = "=";
}
$result = $mysqli->prepare("SELECT t.column FROM table t WHERE t.value".$operator." ? ;");
$result->bind_param($value);
$result->execute();
关于mysql - 数学运算符作为mysql查询中的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35518000/