Foreach döngü içinde saklı yordam çağırma - Sadece ilk idam

0 Cevap php

Bu my earlier question today gerçekten türevidir.

I created a Stored Procedure in my database that I wanted to call several times in a row from PHP.
Let's say this is my procedure:

CREATE PROCEDURE PROC_1(
  IN param1 VARCHAR(255),
  IN param2 VARCHAR(255))
BEGIN
  DECLARE ok INT;
  DECLARE success, failure VARCHAR(255);

  /* several SELECT, IF ... THEN, INSERT and UPDATE operations which then SET ok var to 0 or 1 */
  IF ok = 1 THEN
    SET success = 'Everything went well';
    SELECT success;
    LEAVE;
  ELSE
    SET failure = 'Problem description';
    SELECT failure;
    LEAVE;    
  END IF;
END

Ben bu şekilde (kısa versiyon) yaptım:

$calls = array(
    "CALL PROC_1('param1', 'param2')",
    "CALL PROC_1('param3', 'param4')",
    "CALL PROC_1('param5', 'param6')",
);

// assuming I'm already connected to DB with $link
foreach ($calls as $i => $call)
{
    echo $i . ': ';
    $result = mysql_query($call);
    $ok = ($result === FALSE) ? FALSE : TRUE;
    var_dump($ok);

    if ($result !== FALSE)
        mysql_free_result($result);
}

The first iteration works as expected, but anything after returns FALSE.
Why is that?

mysqli ihtimale çalıştı, ancak tam olarak aynı çıktıyı alıyorum:

0: bool(true)
1: bool(false)
2: bool(false)

Ilginç ne var, ne (tüm sorguları oturum set günlük kaydı) MySQL günlükleri kontrol ettik ve only first query ever gets to the server. Next queries never get to the server.

PS. PHP 5.3.2 ve Apache 2.2.17 koşuyorum.


UPDATE

Shakti Singh'in öneri başı olarak ben $link devlet veritabanı sorgulama önce kontrol ettik. Ben ikinci yineleme yüzden burada hata ile çıktı beri bir hata var fark ettim:

ERROR: (0) 
0: bool(true)
ERROR: (0) 

ERROR: (0) 
1: bool(false)
ERROR: (2014) Commands out of sync; you can't run this command now

ERROR: (2014) Commands out of sync; you can't run this command now
2: bool(false)
ERROR: (2014) Commands out of sync; you can't run this command now

Ayrıca, bu MySQL hata günlüğünde görünür:

101126 15:46:28 [Warning] Aborted connection 129 to db: 'db1' user: 'root' host: 'localhost' (Got an error reading communication packets)

0 Cevap