【问题标题】:Building mysqli queries?构建 mysqli 查询?
【发布时间】:2012-03-02 13:37:51
【问题描述】:

如果我有查询select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid,那么我想在一个条件下添加另一个表,然后在末尾添加一个where 语句。问题是因为当我绑定参数时,它说“变量数与准备语句中的变量数不匹配”。我将如何解决这个问题?干杯。示例:

    $info = "select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid";
    $content = $members->prepare($info);
    if ($_GET['where'] == 'requests') $info .= "LEFT JOIN requests on users.user_id = requests.receiver";
    else if ($_GET['where'] == 'referrals') $info .= "LEFT JOIN referrals on users.user_id = referrals.receiver";
    $info .= "where users.user_id = ?";
    $content->bind_param('s', $_SESSION['token'][1]);
    $content->execute();

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    您在准备好 SQL 字符串后对其进行更改。不要那样做。改为这样做:

    $info = "select users.user_id, users.fname, users.lname, bios.bio, groups.groupid from users LEFT JOIN bios on users.user_id = bios.userid";
    if ($_GET['where'] == 'requests') $info .= " LEFT JOIN requests on users.user_id = requests.receiver";
    else if ($_GET['where'] == 'referrals') $info .= " LEFT JOIN referrals on users.user_id = requests.receiver";
    $info .= " where users.user_id = ?";
    $content = $members->prepare($info);
    $content->bind_param('s', $_SESSION['token'][1]);
    $content->execute();
    

    编辑:另外,请确保您的 SQL 片段在必要时用空格分隔; .= 运算符不会自动为您添加空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-04
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2018-03-17
      相关资源
      最近更新 更多