請教 mysql_unbuffered_query 遇到的問題

來源:互聯網
上載者:User
請問一下

$lh = mysql_connect( 'localhost', 'root', 'root' );
$qry = "SELECT * FROM aaa LIMIT 10";
$rh = mysql_unbuffered_query($qry, $lh);
$thread = mysql_thread_id ( $lh );
while ( $res = mysql_fetch_row( $rh ) )
{
$sql = "INSERT INTO bbb(goods_id,user_id) values(1111,2222)";
mysql_query($sql);
//如果在迴圈裡執行了其它SQL那麼while就終止了。請問是什麼情況?
}


回複討論(解決方案)

掩耳盜鈴??你屏蔽了錯誤資訊:
Function called without first fetching all rows from a previous unbuffered query
函數調用沒有首先取從先前的無緩衝的查詢所有行

對手冊中的描述,總不能視而不見吧?
在向 MySQL 發送一條新的 SQL 查詢之前,必須提取掉所有未緩衝的 SQL 查詢所產生的結果行。

@xuzuning 請問要怎麼處理,不太明白提取掉所有未緩衝的SQL查詢所產生的結果行。

比如你有 $qry = "SELECT * FROM aaa LIMIT 10";
也就是 $rh = mysql_unbuffered_query($qry, $lh); 後
資源 $rh 中應有不多於 10 行的結果

你要把他們都讀出來以後,才可執行其他的資料庫操作
說白了就是:你不讓 MySQL 緩衝結果,你就得自己緩衝結果

@xuzuning 白話一點說就是上面代碼中 while 裡面不能發送新的SQL,因為結果沒有提取完?
是這樣理解不

是的,就是這樣!

非常感謝版主的細心講解。

/如果在迴圈裡執行了其它SQL那麼while就終止了。請問是什麼情況?
因為while ( $res = mysql_fetch_row( $rh ) ) 的mysql_fetch_row($rh) 被影響了

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.