2011-12-07 102 views
0

這是我第一次使用mysqli在一個循環中執行多個查詢,而不是逐個查詢。 有一組複選框,我可以從中選擇要列爲產品的產品數量,然後我需要將它們的ID插入到表格中。這是我的代碼輸出完全沒有任何東西表明成功/失敗執行:mysqli多查詢不起作用

$n=count($offervals); 
for($i=0; $i<count($_POST['offer']); $i++) 
{ 
    if (!($offervals[$i]==null)) { 
    $query_offers .= "insert into productoffers (productcode) VALUES ('".$offervals[$i]."');"; 
    } 
} 

$mysqli = new mysqli($hostname_connection, $username_connection, $password_connection); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* execute multi query */ 
if ($mysqli->multi_query($query_offers)) { 
    do { 
     /* store first result set */ 
     if ($result = $mysqli->store_result()) { 
      while ($row = $result->fetch_row()) { 
       printf("%s\n", $row[0]); 
      } 
      $result->free(); 
     } 
     /* print divider */ 
     if ($mysqli->more_results()) { 
      printf("-----------------\n"); 
     } 
    } while ($mysqli->next_result()); 
} 

/* close connection */ 
$mysqli->close(); 

有什麼建議嗎?這讓我兜兜2小時... :(

回答

1

你不是應該通過$mysqli->connect_error

if ($mysqli->connect_error) { 
    die('Connect Error: ' . $mysqli->connect_error); 
} 

程序風格引用連接錯誤會

<?php 
$link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db'); 

if (!$link) { 
    die('Connect Error: ' . mysqli_connect_error()); 
} 
?> 
0

我知道這是一箇舊帖子,但我不喜歡寬鬆的結尾...

假設連接是好的:

1.)如果查詢中存在語法錯誤,則在multi_query()完成後,您將需要使用mysqli_error($mysqli)

2.)如果你的查詢是純粹的INSERT,那麼他們永遠不會提供一個結果集給你printf。受影響的行將成爲衡量成功的標準。

任何看起來像勺子的人都可以享受:Strict Standards: mysqli_next_result() error with mysqli_multi_query