检查查询mysql中是否有其他内容?

d6kp6zgx  于 2021-10-10  发布在  Java
关注(0)|答案(2)|浏览(273)

此问题已在此处找到答案

使用mysql限制、偏移量分页(4个答案)
五小时前关门了。
我有一个问题:

public function getDataById($id, $offset, $limit)
{
   $query = "  SELECT name, price
                    FROM product
                    WHERE id = $id
                    ORDER BY createdAt DESC
                    LIMIT $offset, $limit";
 $resultQuery  = $connection->query($query);
        if ($resultQuery->num_rows > 0) {
            $result = mysqli_fetch_all($resultQuery, MYSQLI_ASSOC);
        }
        return $result;
}

我想检查一下 $limit$offset 都是空的,如果不是的话,请限制。谢谢
例子

if (!empty($offset) && !empty($limit))
{
   LIMIT $offset, $limit
}
plicqrtu

plicqrtu1#

使用字符串连接:

$query = "SELECT name, price
    FROM product
    WHERE id = $id
    ORDER BY createdAt DESC";

if (!empty($offset) && !empty($limit))
{
   $query .= " LIMIT $offset, $limit";
}

关于注入,您可以将值强制转换为整数,也可以键入提示方法来自动为您执行此操作:

function getDataById(int $id, int $offset, int $limit)
qkf9rpyu

qkf9rpyu2#

public function getDataById($id, $offset, $limit)
{    
    global $connection;

    $query = "  SELECT name, price
                FROM product
                WHERE id = ?
                ORDER BY createdAt DESC";

    if (!empty($offset) && !empty($limit))
    {
        $offset = (int)$offset;
        $limit = (int)$limit;

        $query .= " LIMIT $offset, $limit";
    }

    $stmt = $connection->prepare($query);

    $stmt->bind_param("s", $id);

    $stmt->execute();
    $resultQuery = $stmt->get_result();

    if ($resultQuery->num_rows > 0)
    {
        $result = $resultQuery->fetch_assoc();
    }

    return $result;
}

相关问题