我想知道是否可以在准备好的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/

10-16 15:16
查看更多