开发者社区 问答 正文

准备好的语句“ WHERE .. IN(..)”查询和排序-使用MySQL?mysql

假设我们有一个查询:

SELECT * FROM somewhere WHERE id IN(1,5,18,25) ORDER BY name; 以及要获取的ID数组: $ids = array(1,5,18,25)

预处理语句它劝准备一个语句,并调用它多次:

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE id=?;'); foreach ($ids as $id){ $stmt->bind_params('i', $id); $stmt->exec(); } 但是现在我必须手动对结果进行排序。我有其他不错的选择吗?

展开
收起
保持可爱mmm 2020-05-17 10:45:57 465 分享 版权
1 条回答
写回答
取消 提交回答
  • 您可以这样进行:

    $ids = array(1,5,18,25);

    // creates a string containing ?,?,? $clause = implode(',', array_fill(0, count($ids), '?'));

    $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE id IN (' . $clause . ') ORDER BY name;');

    call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute();

    // loop through results 使用此方法,您将为每个id调用bind_param,并且已由mysql完成排序。来源:stack overflow

    2020-05-17 10:57:50
    赞同 展开评论