Php Mysqli“;选择*FROM";环

Php Mysqli“;选择*FROM";环,php,select,mysqli,Php,Select,Mysqli,目前我正在跳转到mysqli/PDO,并将SELECT循环从“old”方法转换为mysqli “旧”方法: $query=“按id从交易订单中选择*描述限制10”; $result=mysql\u query($query); $num=mysql\u num\u行($result); $i=0; 而($iprepare('SELECT*FROM transactions,其中status=?')){ $pending_stmt->bind_param('s',$status);//$statu

目前我正在跳转到mysqli/PDO,并将SELECT循环从“old”方法转换为mysqli

“旧”方法:

$query=“按id从交易订单中选择*描述限制10”;
$result=mysql\u query($query);
$num=mysql\u num\u行($result);
$i=0;
而($i<$num){
$f1=mysql_result($result,$i,“name”);
$f2=mysql_result($result,$i,“姓氏”);
$f3=mysql_result($result,$i,“pcode”);
$f4=mysql_结果($result,$i,“事务_id”);
$f5=mysql_result($result,$i,“articles”);
$f6=mysql_结果($result,$i,“交付”);
//到这里的桌子上去
$i++;
}
我得到了基本的mysqli查询,然后简单地尝试复制上面的while循环:

if ($pending_stmt=$mysqli->prepare('SELECT * FROM transactions WHERE status = ?')) {
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $pending_stmt->store_result();
    $pending_stmt->fetch_all();

    $rows=$pending_stmt->num_rows();

    $i=0;

    while ($i < $rows) {
        $f1=$pending_stmt->fetch($i,'pcode');

        //echo out to table here

        $i++;
    }
}
if($pending_stmt=$mysqli->prepare('SELECT*FROM transactions,其中status=?')){
$pending_stmt->bind_param('s',$status);//$status在if语句之前设置
$pending_stmt->execute();
$pending_stmt->store_result();
$pending_stmt->fetch_all();
$rows=$pending_stmt->num_rows();
$i=0;
而($i<$rows){
$f1=$pending_stmt->fetch($i,'pcode');
//到这里的桌子上去
$i++;
}
}
不用说,它不起作用了。。。经过多次搜索,我想知道是否有人愿意给我一些建议。

试试看

$pending_stmt->execute(array($status));
$result = $pending_stmt->fetchAll();
我不明白为什么要使用count变量,请为每个变量尝试一个:

foreach($result as $item) {
    $f1 = $item['pcode'];
}

难怪它不起作用。你把一切都搞混了。您不需要
store_result()
fetch_all()
num_rows()
fetch()
无法像
mysql\u result()
那样导航到特定的行和列。
你有两个选择如何解决它

  • 使用
    get\u result()

  • 使用
    store\u result()
    bind\u result()
    fetch()


  • 你能不能说得更清楚一点“它不起作用”?它不起作用。。。因为它没有返回任何结果。我尝试过这个,但没有效果。我正在查看bind_result()atm。请参阅apache错误日志。这应该是可行的,如果没有,请尝试查看您是否正确设置了$mysqli。
    foreach($result as $item) {
        $f1 = $item['pcode'];
    }
    
    $pending_stmt = $mysqli->prepare('SELECT columnA, columnB FROM transactions WHERE status = ?');
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $result = $pending_stmt->get_result();
    
    foreach ($result as $row) {
        echo $row['columnA'];
        echo $row['columnB'];
    }
    
    $pending_stmt = $mysqli->prepare('SELECT columnA, columnB FROM transactions WHERE status = ?');
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $pending_stmt->store_result(); // recommended, but not necessary
    $pending_stmt->bind_result($f1, $f2);
    
    while ($pending_stmt->fetch()) {
        echo $f1;
        echo $f2;
    }