2016-08-13 3 views
0

У меня есть следующий сценарий, запрос работает отлично, поскольку это приносит желаемые результаты, однако, на бревнах, следующее сообщение об ошибке появляется в PHP:Query работает на PHPMyAdmin, но не работает на PHP коде

[Sat Aug 13 11:04:14.025454 2016] [:error] [pid 17819] [client 192.168.11.1:45339] PHP Fatal error: Call to a member function execute() on a non-object in /var/www/html/hs-curweek.php on line 46 

линия 46 это: $stmt->execute();

Что может возможно быть не так? Внутри файла functions.php переменные для MySQLi называется $DB

<?php 
    printFooter(); 
?> 
<div class="container-fluid"> 
    <div class="row"> 
     <div class="table-responsive"> 
      <table class="table table-striped"> 
       <thead> 
        <th>Nombre</th> 
        <th>Recurso</th> 
        <th>Motivo</th> 
        <th>Clase</th> 
        <th>Grado</th> 
        <th>Fecha</th> 
       </thead> 
       <tbody> 
        <?php 
         $query = "SELECT t6.USERNAME as Nombre, t2.RESOURCENAME as Recurso, RESERVATION_DESCRIPTION as Descripción, t4.CLASSNAME, t5.GRADENAME, CONCAT(CAST(DATE_FORMAT(RESERVATIONDUEDATE, '%M %D %Y de %l:%i %p') AS CHAR) , ' a ', CAST(DATE_FORMAT(RESERVATIONEXPIREDATE, '%l:%i %p') AS CHAR)) as Fecha 
         FROM `reservation` t1 
         INNER JOIN `resource` t2 ON t1.RESOURCEID = t2.RESOURCEID 
         INNER JOIN schedule_intermediate t3 ON t1.SCHEDULEID_GENERATED = t3.SCHEDULEID_GENERATED 
         INNER JOIN class t4 ON t1.CLASSID = t4.CLASSID 
         INNER JOIN grade t5 ON t1.GRADEID = t5.GRADEID 
         INNER JOIN users t6 ON t1.USERID = t6.USERID 
         WHERE (
         YEARWEEK( `RESERVATIONDUEDATE` , 1) = YEARWEEK(CURDATE() , 1) 
         ) 
         AND (
         t2.RESOURCELOCATIONID =3 
         OR t2.RESOURCELOCATIONID =4 
         )"; 
         $stmt = $DB->prepare($query); 
         $stmt->execute(); 
         $stmt->bind_result($nombre, $recurso, $motivo, $clase, $grado, $fecha); 
         while($stmt->fetch()){ 
          echo '<tr>'; 
          echo '<td>'.$nombre.'</td>'; 
          echo '<td>'.$recurso.'</td>'; 
          echo '<td>'.$motivo.'</td>'; 
          echo '<td>'.$clase.'</td>'; 
          echo '<td>'.$grado.'</td>'; 
          echo '<td>'.$fecha.'</td>'; 
          echo '</tr>'; 
         } 
        ?> 
       </tbody> 
      </table> 
     </div> 
    </div> 
</div> 
</body> 
+1

$ stmt не является объектом. Таким образом, проблема $ DB-> prepare() выглядит проблемой - проверьте, что она возвращает. –

+1

Крайний способ сделать то, что предложил @Chris: '$ stmt = $ DB-> prepare ($ query) или die ($ DB-> error);'. – eggyal

ответ

-1

Попробуйте изменить обработку ошибок, acording к документации PDO подготовить функцию http://php.net/manual/en/pdo.prepare.php он может вернуть ложным или pdoexception, я предполагаю, что он возвращает ложное право теперь var_dumping это, когда вы получите исключение, может помочь