只有变量应该通过引用传递-当使用bindparam的limit时

lymgl2op  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(341)

我要用 LIMITbindParam 所以我建立了这个查询:

$app->get('/contact/get_contacts/{contact_number}', function (Request $request, Response $response, array $args)
{
    $query = "SELECT * FROM contact LIMIT :contact_number";
    $sql->bindParam("contact_number", intval($args["contact_number"]), PDO::PARAM_INT);
    $sql->execute();
    $result = $sql->fetchAll();
    return $response->withJson($result);
});

我收到这个通知:
只能通过引用传递变量
我做错了什么?我在用 Slim FrameworkPDO

brtdzjyr

brtdzjyr1#

您需要更改:

$sql->bindParam("contact_number", intval($args["contact_number"]), PDO::PARAM_INT);

用,

$sql->bindParam(":contact_number", $args["contact_number"], PDO::PARAM_INT);

我加上了失踪的人 : 在参数名之前。
我已经移除了 intval 函数调用,如果仍要使用该函数,请在 bindParam 函数调用。
根据功能定义:

public bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

绑定参数是引用变量( &$variable ).
阅读材料 bindParam

bvn4nwqk

bvn4nwqk2#

您正在双重处理数据类型。你不需要 intval 明确指定时 PDO::PARAM_INT . 把它拿走 intval 或者看看原因 bindValue :

$sql->bindValue(":contact_number", intval($args["contact_number"]));

相关问题