Mar*_*arc 7 php pdo prepared-statement
我使用以下sql来获取que_id我的表的特定行的字段的值值,它工作正常.请注意,que_id(自动递增)和行号不一样.
$qry_que_getid = $connexion->query('SELECT somefield FROM table ORDER BY somefield ASC LIMIT '.$lineNumberSeeked.', 1');
$row = $qry_que_getid->fetch(PDO::FETCH_ASSOC);
echo $row['que_id'];
Run Code Online (Sandbox Code Playgroud)
当我尝试将该查询转换为准备好的查询,如下所示我有一个错误,我没有得到它:
$qry_que_getid = $connexion->prepare('SELECT somefield FROM table ORDER BY somefield ASC LIMIT ?, 1');
$qry_que_getid->execute(array(4));
$row = $qry_que_getid->fetch(PDO::FETCH_ASSOC);
echo $row['que_id'];
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''3', 1' at line 1
希望somene可以帮助我理解.先感谢您.干杯.渣.
来自http://www.php.net/manual/en/pdostatement.execute.php的 PHP 手册:
一个值数组,其元素数量与正在执行的 SQL 语句中的绑定参数数量相同。所有值都被视为 PDO::PARAM_STR。
我相信 LIMIT 子句需要一个整数,因此您应该使用 bindParam() 方法。
$limit = 4;
$qry_que_getid->bindParam(1, $limit, PDO::PARAM_INT);
$qry_que_getid->execute();
Run Code Online (Sandbox Code Playgroud)
否则,参数将作为 PDO::PARAM_STR 类型而不是预期的 PDO::PARAM_INT 传递。
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |