Я новичок здесь в качестве постера, поэтому прошу прощения за то, что я ознакомился с протоколом и использованием сайта. Я не инженер по программному обеспечению, но написал немного за эти годы.
У меня возникла проблема с сообщением «Ошибка запроса: команды не синхронизированы; вы не можете запустить эту команду сейчас», и я потратил очень много времени, пытаясь найти ошибку моих способов. Я считаю, что я сделал все, что я видел, предложенный в отношении mysqli_next_result и mysqli_free_result
В php я делаю пару запросов, и второй не удается с этим. Если я запускаю первый запрос дважды, это нормально. Оба запроса вызывают хранимую процедуру в mysql через библиотечную функцию в php. Я вызываю item_category, а затем item_list. В других местах я вызываю item_category дважды, и он отлично работает.
phplib выдержка:
function item_category($category = 0){
mysqli_multi_query(DBi:: $gissit_dbh, "CALL SP_Item_category" ."(". $category .")") or die("Query fail: " . mysqli_error(DBi::$gissit_dbh));
$result = mysqli_store_result(DBi:: $gissit_dbh);
return $result;
while($gissit_dbn->more_results()){
mysqli_next_result($result);
}
mysqli_free_result($gissit_dbh);
}
//Get all wanted items in this category and its subcategories
function item_list($category = 0){
mysqli_multi_query(DBi:: $gissit_dbh, "CALL SP_Item_list" ."(". $category .")") or die("Query fail: " . mysqli_error(DBi::$gissit_dbh));
$result = mysqli_store_result(DBi:: $gissit_dbh);
return $result;
while($gissit_dbn->more_results()){
mysqli_next_result($result);
}
mysqli_free_result($result);
}
хранимые процедуры mysql:
item_category:
select Id, Name, Parent_Id, Count from Item_Category where Parent_Id = cat_id order by Name
item_list:
SELECT * FROM `Item_Wanted` WHERE Category_Id IN
(SELECT Id FROM `Item_Category_Lookup` where Id = int_Parent_Id OR Id_1 = int_Parent_Id OR Id_2 = int_Parent_Id OR Id_3 = int_Parent_Id OR Id_4 = int_Parent_Id)
Фактический вызов функции phplib выглядит так:
If ($cat < 1){
$result = item_category($cat);
while ($row = mysqli_fetch_array($result)){
echo "<div class='col-md-4'><a href= item_wanted.php?cat=" .$row['Id'] .">".$row['Name']." (".$row['Count'].")"."</a></p>"."\r\n </div>";
}
}
If ($cat > 0){
$result = item_list($cat);
while ($row = mysqli_fetch_array($result)){
echo "<div class='col-md-4'><a href= item_wanted.php?cat=" .$row['Id'] .">".$row['Title']."</a></p>"."\r\n </div>";
}
}
Задача ещё не решена.
Других решений пока нет …