请教关于pdo的prepare用法

rainxies 2013-03-08 04:12:15
菜鸟求教,
类似这种写法,即同时查询多个SQL,用prepare该怎么取结果集啊?

$dbh = new PDO($dbConnString, $dbInfo['username'], $dbInfo['password']);
$query = $dbh->query($queryString);
$i = 0;
foreach ($query as $query2) {
$queryReturn[$i] = $query2;
$i++;
}

...全文
290 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainxies 2013-03-11
  • 打赏
  • 举报
回复
了解了解,谢谢!!! 能不能再帮我看看这个问题?不胜感激!!! http://bbs.csdn.net/topics/390388184
引用 5 楼 xuzuning 的回复:
你试试不就行了? php 不允许一次执行一条以上的 SQL 指令,完全是出于防止 SQL攻击 的考虑 如果你使用 mysqli 扩展,倒是可以用 mysqli_multi_query 一次执行多条 SQL 指令。当然,安全性得由你自己负责了
引用 5 楼 xuzuning 的回复:
你试试不就行了? php 不允许一次执行一条以上的 SQL 指令,完全是出于防止 SQL攻击 的考虑 如果你使用 mysqli 扩展,倒是可以用 mysqli_multi_query 一次执行多条 SQL 指令。当然,安全性得由你自己负责了
xuzuning 2013-03-11
  • 打赏
  • 举报
回复
你试试不就行了? php 不允许一次执行一条以上的 SQL 指令,完全是出于防止 SQL攻击 的考虑 如果你使用 mysqli 扩展,倒是可以用 mysqli_multi_query 一次执行多条 SQL 指令。当然,安全性得由你自己负责了
rainxies 2013-03-11
  • 打赏
  • 举报
回复
谢谢xuzuning,那如果不用存储过程,用类似

    begin
      select SQL_CALC_FOUND_ROWS * from table limit 1,10;
      select FOUND_ROWS();
    end;
这样的呢?
引用 3 楼 xuzuning 的回复:
本帖最后由 xuzuning 于 2013-03-11 09:05:47 编辑 如果你的sql指令就是#1的样子,那么对不起! select FOUND_ROWS() 不会被发送到mysql去执行,因为他违反了一次只执行一条指令的安全约定 你可以将你的这两条指令写成存储过程SQL code?1234567delimiter //CR……
xuzuning 2013-03-11
  • 打赏
  • 举报
回复
如果你的sql指令就是#1的样子,那么对不起!
select FOUND_ROWS() 不会被发送到mysql去执行,因为他违反了一次只执行一条指令的安全约定

你可以将你的这两条指令写成存储过程
delimiter //
CREATE PROCEDURE `test`()
begin
select SQL_CALC_FOUND_ROWS * from table limit 1,10;
select FOUND_ROWS();
end;
//
后这样执行
$queryString = 'call test();';
$query = $dbh->query($queryString);
do {
$rows = $query->fetchAll();
print_r($rows);
}while($query->nextRowset());
rainxies 2013-03-11
  • 打赏
  • 举报
回复
都没人了啊……
rainxies 2013-03-08
  • 打赏
  • 举报
回复
我主要是想用

select SQL_CALC_FOUND_ROWS * from table limit 1,10;select FOUND_ROWS();
一次查询实现带参数的分页功能

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧