2012-06-15 3 views
0

Я пытаюсь преобразовать MySQL в MySQLi. И я не могу понять, почему он тормозитКак реализовать MySQLi вложенные подготовленные операторы?

$stmt2->execute(); 

и возвращает сообщение об ошибке:

Call to a member function execute() on a non-object

Любой вопрос или действительного осуществления этого !?

// SQL condition "WHERE group=''" where `group` is empty (NULL) 
$result = "SELECT id, name FROM table WHERE group='' ORDER BY array ASC"; 

if ($stmt = $mysqli->prepare($result)) { 
    $stmt->execute(); 
    $stmt->bind_result($id, $name); 

    while ($stmt->fetch()) { 
     // SQL condition "WHERE group='$id'" where $id defined in $stmt->bind_result($id, $name); 
     $result2 = "SELECT name FROM table WHERE group='$id' ORDER BY array ASC"; 

     $stmt2 = $mysqli->prepare($result2); 
     //$valid_stmt2 = $stmt2 === FALSE ? false : true; 

     echo $name . "\n"; 

     //if ($valid_stmt2) { 
      // Error cased on $stmt2->execute(); 
      $stmt2->execute(); 
      $stmt2->bind_result($name2); 

      while ($stmt2->fetch()) { 
       echo 'related to: ' . $name2 . "\n"; 
      } 

      $stmt2->close(); 
     //} 
    } 

    $stmt->free_result(); 
    $stmt->close(); 
} 

Этот вопрос может быть связан с Possible to use multiple/nested MySQLi statements? К сожалению, я не считаю полезным, так как он не обеспечивает правильный пример или ресурс для выдачи.

Обновление: упрощенный пример кода с комментариями.

+0

@hakre Это не дублирование http://stackoverflow.com/questions/8999691/call -в-а-член-функции-выполнить-на-не-объект. Я изменяю '$ stmt2 = $ mysqli-> prepare (" SELECT url, name FROM links WHERE group = '?' ORDER BY array ASC ");' и добавлен '$ stmt2-> bind_param (" i ", $ id); ', но он все равно не работает. Любой может предоставить рабочий пример? Второй 'while()' должен возвращать результаты запроса на основе своего условия - '$ id' из первого' while() '. – Binyamin

+0

Нелепо, как сообщество рассматривает этот вопрос как точный дубликат http://stackoverflow.com/questions/8999691/call-to-a-member-function-execute-on-a-non-object. Запрошенная повторная проверка. – Binyamin

ответ

0

Вы первый сделал

"SELECT id, url, name FROM links WHERE group='' ORDER BY array ASC" 

Затем вы хотите использовать $id сделать

"SELECT url, name FROM links WHERE group='$id' ORDER BY array ASC" 

Как получить результат для этого? Если группа равна пустой строке, то она не будет равна $id (только если $id также является пустой строкой, но это не имеет смысла.)

+0

'echo '$ id $name"; 'будет возвращать значение $ id. Что не так, чтобы вернуть его в '' SELECT url, name FROM links WHERE group = '$ id' ORDER BY array ASC "'? Любая проблема? – Binyamin

+0

@Binyamin Только ваша логика подключена, 'group' не будет' '' 'и' '$ id'' в то же время. – xdazz

+0

@Binyamin И если ваш '' $ id'' недопустимый, это приведет к неправильному использованию вашего sql-кода, вместо этого используйте вместо него placeholder. – xdazz

Смежные вопросы