限制数据选择对我的分页不起作用

时间:2017-10-14 09:32:50

标签: php

我有这个代码,但是当我将LIMIT数据选择与变量一起使用时,它将无法工作:

$sql = "SELECT *
        FROM structure
        WHERE row1 LIKE '%" . $_POST["query"] . "%'
        OR row2 LIKE '%" . $_POST["query"] . "%'
        OR row3 LIKE'%" . $_POST["query"] . "%'
        OR row4 LIKE'%" . $_POST["query"] . "%'
        OR row5 LIKE'%" . $_POST["query"] . "%'
        OR row6 LIKE'%" . $_POST["query"] . "% '
        LIMIT {$variable} , {$variable2}";

但是,如果我使用相同的代码,但将LIMIT数据选择更改为数字,它将起作用:

$sql = "SELECT * FROM structure WHERE row1   LIKE '%".$_POST["query"]."%' OR row2 LIKE'%".$_POST["query"]."%' OR row3 LIKE'%".$_POST["query"]."%' OR row4 LIKE'%".$_POST["query"]."%' OR row5 LIKE'%".$_POST["query"]."%' OR row6 LIKE'%".$_POST["query"]."% ' LIMIT 0 , 5 ";

我需要使用变量,因为它不会永远不变。

编辑:这是我的全部代码:

$record_per_page = 5;
if(isset($_POST['query'])) {
    $page = $_POST['query'];
    $start_from = ($page - 1) * $record_per_page;
    $sql = "SELECT *
            FROM structure
              WHERE row1 LIKE '%" . $_POST["query"] . "%'
              OR row2 LIKE '%" . $_POST["query"] . "%'
              LIMIT $start_from , $record_per_page";
    $result = mysqli_query($connect, $sql);
    if(mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_array($result)) {
            $output .= ' ';
        }
        echo $output;
    }
}

2 个答案:

答案 0 :(得分:0)

没有足够的代表评论,sry。 如果您尚未使用PDO,请首先阅读此内容,尤其是预备语句部分。 https://phpdelusions.net/pdo

接下来,选择您实际需要的列,而不是懒惰的选择*。 另外,你可以发布一些你的表定义吗?很想知道它是什么样的。

最后:

$query = "
SELECT *
FROM structure
WHERE row1 LIKE
    OR row2 LIKE ? 
    OR row3 LIKE ?
    OR row4 LIKE ?
    OR row5 LIKE ?
    OR row6 LIKE ?
LIMIT " . $variable1 . " , " . $variable2;

$stmt = $pdo->prepare($query);
$stmt->execute( ); //insert your parameters here

这应该让你上路=)

答案 1 :(得分:0)

你不需要LIMIT中的花括号:

$sql = "SELECT *
        FROM structure
        WHERE row1 LIKE '%" . $_POST["query"] . "%'
        OR row2 LIKE '%" . $_POST["query"] . "%'
        OR row3 LIKE'%" . $_POST["query"] . "%'
        OR row4 LIKE'%" . $_POST["query"] . "%'
        OR row5 LIKE'%" . $_POST["query"] . "%'
        OR row6 LIKE'%" . $_POST["query"] . "% '
        LIMIT " . $start_from. " , " . $record_per_page. "";

修改 打印您的$variable& $variable2肯定......

更改此行:$start_from = ($page - 1) * $record_per_page;