这是基于相同原理的更整洁的解决方案:
function get_result( $Statement ) { $RESULT = array(); $Statement->store_result(); for ( $i = 0; $i < $Statement->num_rows; $i++ ) { $metadata = $Statement->result_metadata(); $PARAMS = array(); while ( $Field = $metadata->fetch_field() ) { $PARAMS[] = &$RESULT[ $i ][ $Field->name ]; } call_user_func_array( array( $Statement, 'bind_result' ), $PARAMS ); $Statement->fetch(); } return $RESULT;}
使用mysqlnd, 您通常可以执行以下 *** 作:
$Statement = $Database->prepare( 'SELECt x FROM y WHERe z = ?' );$Statement->bind_param( 's', $z );$Statement->execute();$Result = $Statement->get_result();while ( $DATA = $Result->fetch_array() ) { // Do stuff with the data}
而且 没有mysqlnd :
$Statement = $Database->prepare( 'SELECt x FROM y WHERe z = ?' );$Statement->bind_param( 's', $z );$Statement->execute();$RESULT = get_result( $Statement );while ( $DATA = array_shift( $RESULT ) ) { // Do stuff with the data}
因此用法和语法几乎相同。主要区别在于替换函数返回结果数组,而不是结果对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)