我试图在循环内使用(客户端)PHP PDO对MS SQL服务器数据库执行简单查询,但我无法检索多条记录。
外部循环有几十万次迭代(不使用PDO),内部PDO获取循环应该为每次外部迭代返回2-4条记录。
这就是我所拥有的,不确定我做错了什么:
$dbh = '';
try {
$dbh = new PDO("sqlsrv:Server=mysqlserver, 1433;Database=mydatabase", '', '');
}
catch(Exception $e) {
echo "Error connecting to MS SQL database.";
error_log($e);
exit;
}
$foreign_keys = array(1563,89563,98272634); // etc.. The actual keys used here are obtained with other code not related to the problem.
foreach($foreign_keys as $foreign_key){
$sth = $dbh->prepare("select col1 from one_to_many_table where foreign_key=?");
$sth->bindParam(1, $foreign_key );
$sth->execute();
// expecting 2+ rows here ..
while($result = $sth->fetch( PDO::FETCH_ASSOC )){
echo $foreign_key.', '.$result['col1']."\n";
}
}
// Output:
// 1563, {value for col1} // first outer iteration, first PDO record returned
// --END -- Nothing else
我只从外循环的第一次迭代中获取从PDO获取返回的第一条记录。
我没有在屏幕上或错误日志中显示任何错误。
我在使用PHP 5.6.26(cli)的Windows 7计算机上从CMD行运行此脚本。