相关疑难解决方法(0)

MySQL上的LIMIT关键字,带有预处理语句

SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?
Run Code Online (Sandbox Code Playgroud)

使用PDO(我正在使用具有Apache 2.2.21的MAMP 2.0.5,PHP高达5.3.6和MySQL 5.5.9)准备语句这不起作用,如果我更改查询

LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)

有用.

我在MySQL的错误中看到这是以前版本中的一个错误,但我无法理解这是否仍有待修复.

如果这仍然是个问题,有办法以另一种方式选择一系列行吗?

码:

$comments = $db->prepare($query); 
/* where $db is the PDO object */ 
$comments->execute(array($post, $min, $max)); 
Run Code Online (Sandbox Code Playgroud)

php mysql prepared-statement limit

21
推荐指数
2
解决办法
2万
查看次数

如何传递PDO参数数组但仍指定其类型?

$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2";
Run Code Online (Sandbox Code Playgroud)

我想仍然像这样使用数组输入:

$stmt->execute($array);
Run Code Online (Sandbox Code Playgroud)

否则我不能重复使用相同的方法来执行我的查询.

同时,:limit1和:limit2不起作用,除非它像这样输入:

$stmt->bindParam(':limit1', $limit1, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

我试图做两个但它不使用bindParams执行:

$stmt->bindParam(':limit2', $limit2, PDO::PARAM_INT);
$stmt->execute($array);
Run Code Online (Sandbox Code Playgroud)

它的方法是什么?

我以为我可以扩展PDOStatement并添加一个新方法"bindLimit"或其他东西,但我无法弄清楚PDO使用什么内部方法将参数绑定到变量.

php mysql pdo

18
推荐指数
2
解决办法
1万
查看次数

如何使用pdo的预备语句来命令和限制条款?

我想使用一个准备好的语句,其中传入的参数用于ORDER BYLIMIT子句,如下所示:

$sql = 'SELECT * FROM table ORDER BY :sort :dir LIMIT :start, :results';
$stmt = $dbh->prepare($sql);
$stmt->execute(array(
     'sort'  => $_GET['sort'], 
     'dir'  => $_GET['dir'], 
     'start'  => $_GET['start'],
     'results' => $_GET['results'],
     )
    );
Run Code Online (Sandbox Code Playgroud)

$stmt->fetchAll(PDO::FETCH_ASSOC);什么都不回报.

有人能指出我在做什么是错的吗?可以吗?如果没有,我应该参考哪些条款的完整列表可以使用参数?

php pdo prepared-statement

16
推荐指数
3
解决办法
2万
查看次数

在查询中使用PDO预处理语句和LIMIT时出错

我在我的应用程序中使用PDO.但是当我在包含的查询中使用预准备语句时,我遇到了问题LIMIT.有什么问题?
代码:

$start = 0;
$rows = 20;
$sql = "SELECT * FROM tbl_news ORDER BY date DESC LIMIT ?, ?";
$q = $db->prepare($sql);
$q->execute(array($start , $rows));
Run Code Online (Sandbox Code Playgroud)

错误:

检查与MySQL服务器版本对应的手册,以便在"0","20"附近使用正确的语法

php mysql pdo prepared-statement limit

11
推荐指数
2
解决办法
1万
查看次数

在MySQL查询的LIMIT子句中使用占位符时出现PHP PDO错误

$sql = "SELECT sql_calc_found_rows * FROM members".
       " ORDER BY username LIMIT :startRow, :numRows";

try {
    $st = $conn->prepare($sql);
    $st->bindParam(":startRow", $startRow, PDO::PARAM_INT);
    $st->bindParam(":numRows", $numRows, PDO::PARAM_INT);
    $st->execute();
} catch (PDOException $e) {
    die("Query failed: " . $e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)

我在这里得到错误:

查询失败:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"5"附近使用正确的语法.

LIMIT :startRow, :numRows中有问题:numRows.

我曾经尝试都$st->bindParam$st->bindValue,两人都没有工作.

php mysql pdo

8
推荐指数
1
解决办法
702
查看次数

PDO LIMIT和OFFSET

可能重复:
LIMIT中的PHP PDO bindValue

在准备语句中使用LIMIT和/或OFFSET时我无法显示数据,但如果我不使用LIMIT和OFFSET,我可以显示"雷雷",代码看起来是错误的吗?

$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :sta OFFSET :ppage");
$name = "Lei Lei";
$statement->execute(array(':name' => $name,':sta' => $start,':ppage' => $per_page));
Run Code Online (Sandbox Code Playgroud)

这已经从原来的代码改变了:

$query_pag_data = "SELECT id,username from public2 LIMIT $start, $per_page";
$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error());
Run Code Online (Sandbox Code Playgroud)

php pdo

7
推荐指数
3
解决办法
3万
查看次数

使用命名占位符设置PDO/MySQL LIMIT

我遇到了绑定LIMITSQL查询部分的问题.这是因为查询是作为字符串传递的.我在这里看到另一个Q处理绑定参数,没有任何处理数组中的命名占位符.

这是我的代码:

public function getLatestWork($numberOfSlides, $type = 0) {

$params = array();
$params["numberOfSlides"] = (int) trim($numberOfSlides);
$params["type"] = $type;

$STH = $this->_db->prepare("SELECT slideID 
    FROM slides
    WHERE visible = 'true'
        AND type = :type
    ORDER BY order
    LIMIT :numberOfSlides;");

$STH->execute($params);

$result = $STH->fetchAll(PDO::FETCH_COLUMN);

return $result;        
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:Syntax error or access violation near ''20''(20是值$numberOfSlides).

我怎样才能解决这个问题?

php mysql pdo

5
推荐指数
1
解决办法
4841
查看次数

PDO Execute 将 Bind Integer 参数显示为字符串

PDO 似乎会在准备好的 sql 语句中自动为绑定参数添加引号。

当我试图限制结果数量时,我不想要这个功能,因为这应该被视为 mysql 的整数。

function fixStatistics($metal, $currency, $months){
$db = connectPDO();
$sql = '
        SELECT [COLUMN NAMES]
        FROM [TABLE NAMES]
        WHERE [WHERE STUFF]
        GROUP BY `Month`
        ORDER BY MONTH(DateStamp) LIMIT :numMonths
';

$stmt = $db->prepare($sql);
$stmt->execute(
        array(
        ':metal' => $metal,
        ':currency' => $currency,
        ':numMonths' => $months // Problem Code
    )
);
$statistics = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $statistics;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过手动注入/连接 sql 语句来解决这个问题 - 这不是我想要做的。

ORDER BY MONTH(DateStamp) LIMIT ' . $numMonths
Run Code Online (Sandbox Code Playgroud)

但是有没有办法将 :numMonths 直接转换为 int 点$stmt->execute();

php pdo

5
推荐指数
1
解决办法
8733
查看次数

参数化的PDO查询和`LIMIT`子句 - 不起作用

我有这样的查询:

SELECT imageurl 
FROM entries 
WHERE thumbdl IS NULL 
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

它与PDO和MySQL Workbench完美配合(它可以根据需要返回10个URL).

但是我尝试LIMIT使用PDO 进行参数化:

$cnt = 10;
$query = $this->link->prepare("
             SELECT imageurl 
             FROM entries 
             WHERE imgdl is null 
             LIMIT ?
         ");

$query->bindValue(1, $cnt);

$query->execute();

$result = $query->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

返回空数组.

php pdo limit sql-parametrized-query

5
推荐指数
2
解决办法
6324
查看次数

PDO准备语句限制不起作用

我试图限制从SQL查询返回的结果数量,但由于某种原因它返回NULL.如果我删除LIMIT,一切正常.我在Sequel Pro中测试了这个查询,它也适用于LIMIT.我在这里做错了吗?

 public static function getMostViewedPictures($limit = 5) {
    $dbh = self::connectToDatabase();

    $sql = "SELECT 
                picture.`title`, 
                picture.`description`,
                picture.`slug`,
                picture.`image`,
                picture.`timestamp`,
                picture.`views`,
                category.category as category
            FROM picture 
            LEFT JOIN category 
                ON picture.category_id = category.id
            ORDER BY picture.views ASC
            LIMIT 0, :limit";

    $sth = $dbh->prepare($sql);
    $sth->execute(array(':limit' => $limit));

    if($results = $sth->fetchAll(PDO::FETCH_OBJ)) {
        $pictures = array();

        foreach($results as $result) {
            $pictures[] = new Picture(
                $result->title,
                $result->description,
                $result->slug,
                $result->timestamp,
                $result->category,
                $result->views,
                $result->image
            );
        }

        return $pictures;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
1
解决办法
3600
查看次数