2013-08-12 2 views
1

У меня возникла проблема с привязкой моего результата. PHP продолжает выводить сообщение об ошибке со следующимPHP MySQLI :: проблема bind_result

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in /var/www/public_html/test.php on line 38 

Теперь, прежде чем кто-либо начинает ссылку других ссылок, я уже посмотрел вверх и вниз StackOverflow и сделал небольшой поиск на Google, а также. Все примеры, которые я нашел, в том числе PHP.net, говорят, что это правильно ... Но, очевидно, это не так.

Вот что у меня есть:

function __verify($digit4, $woid) { 
    $query = $this->mysql->prepare("SELECT * FROM pc_wo wo LEFT JOIN pc_owner owner ON owner.pcid=wo.pcid WHERE wo.woid=? AND SUBSTRING(owner.pcphone, -4)=?"); 
    $query->bind_param("is",$woid,$digit4); 
    if (!$query->execute()) return false; 
    $query->bind_result($resp); 
    $query->fetch(); 

    var_dump($resp); 
    return true; 
} 

EDIT Я полагаю, вы не можете использовать bind_result для шаблона выберите (*) ... Так что я использую в соответствии с mysqli_stmt для извлечения весь массив?

Спасибо!

+0

Ваш ввод в функцию? –

+0

@LiamSorsby '$ class -> __ verify (4992,1920)' – user0000001

+0

Не должны ли вы иметь несколько связываний? Один с каждым параметром? –

ответ

0

если вы достаточно удачливы, вы можете использовать get_result():

if (!$query->execute()) return false; 
$res = $query->get_result(); 
$row = $res->fetch-assoc(); 

, если нет - вы обязаны использовать эти get_metadata() фокусы с другого ответа.

+0

Да, даже близко. Но вы правы в отношении метаданных. – user0000001

1

Мое решение использует метод псевдо:

private function __compile($handler) 
{ 
    $meta = $handler->result_metadata(); 
    while ($field = $meta->fetch_field()) { 
     $params[] = &$row[$field->name]; 
    } 

    call_user_func_array(array($handler, 'bind_result'), $params); 

    while ($handler->fetch()) { 
     foreach($row as $key => $val) { 
      $x[$key] = $val; 
     } 
     $results[] = $x; 
    } 

    return $results; 
} 

Это может быть решение, но почему MySQLi не включать подготовленное заявление шаблонных заявлений?

+0

. в виде get_result. –

+0

@YourCommonSense? – user0000001

+0

Используйте PDO. См. Http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons?rq=1 –

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