2016-10-01 1 views
0

HalloAbfangbare fatal error: Object der Klasse PDOStatement kann nicht in String umgewandelt werden (mit fetchAll Funktion)

ich diesen Fehler bei dem Versuch, eine PHP-Anordnung auszuführen:

Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/u722941258/public_html/cuenta/account/chat/index.php on line 56


der Code der Datei:

<?php 
session_start(); 
require_once '../../access/functions.php'; 
$user_index = new USER(); 

if(!$user_index->is_logged_in()) { $user_index->redirect('../../access/index.php'); } 

$stmt = $user_index->runQuery("SELECT * FROM users WHERE id=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 


$stmt = $user_index->runQuery("SELECT * FROM conversations WHERE user_id=:uid ORDER BY conversation_id ASC"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
?> 
Some HTML with no PHP
<?php foreach($result as $row_conv) { 
    echo " 
    <a href='#chat_".$row_conv['conversation_id']."' type='button' class='list-group-item' data-toggle='modal' data-target='#chat_".$row_conv['conversation_id']."'>".$row_conv['conv_name']."</a>\n 

    <!-- Modal --> 
    <div id='chat_".$row_conv['conversation_id']."' class='modal fade' role='dialog'> 
     <div class='modal-dialog'> 

     <!-- Modal content--> 
     <div class='modal-content'> 
      <div class='modal-header'> 
      <button type='button' class='close' data-dismiss='modal'>&times;</button> 
      <h4 class='modal-title'>Chat con ".$row_conv['conv_name']."</h4> 
      </div> 
      <div class='modal-body'> ". 
      $stmt = $user_index->runQuery("SELECT * FROM chat WHERE user_id=:uid AND conversation_id=:conv_id ORDER BY message_id DESC"); 
      $stmt->bindParam(":uid",$_SESSION['userSession']); 
      $stmt->bindParam(":conv_id",$row_conv['conversation_id']); 
      $stmt->execute; 
      $result_chat = $stmt->fetchAll(PDO::FETCH_ASSOC); 

      foreach($result_chat as $row_chat) { 
      print($row_chat['data']."/n"); 
      } 

      " </div> 
      <div class='modal-footer'> 
      <button type='button' class='btn btn-default' data-dismiss='modal'>Cerrar</button> 
      </div> 
     </div> 
     </div> 
    </div> 
    "; 
} ?> 


Also, wie kann ich es beheben?

Dank

+0

Was ist in Zeile 56? Übrigens sollte '-> bindparam (...)' '-> bindParam (...)' sein, es sei denn, es handelt sich um eine benutzerdefinierte Methode. Außerdem haben Sie 'execute' als Eigenschaft gemacht, es sollte' $ stmt-> execute() sein; ' –

+0

@RajdeepPaul Zeile 56 entspricht' $ stmt = $ user_index-> ​​runQuery ("SELECT * FROM chat WHERE benutzer_id =: uid UND conversation_id =: conv_id ORDER BY message_id DESC ");' Und bindparam funktioniert als bindParam –

+0

Was ist in Zeile 56? Dump '$ _SESSION ['userSession']' und '$ row_conv ['conversation_id']' um zu überprüfen, ob sie tatsächlich den Wert in dem von Ihnen benötigten Datentyp haben. –

Antwort

1

Dieser Code wird alles falsch fast auf jeden Fall in eine Zeichenfolge hinzugefügt wird, die . nach

<?php foreach($result as $row_conv) { 
    echo "<HTML Code, bla bla bla>". 
      $stmt = $user_index->runQuery("SELECT * FROM chat WHERE user_id=:uid AND conversation_id=:conv_id ORDER BY message_id DESC"); 
      $stmt->bindparam(":uid",$_SESSION['userSession']); 
      $stmt->bindparam(":conv_id",$row_conv['conversation_id']); 
      $stmt->execute; 
      $result_chat = $stmt->fetchAll(PDO::FETCH_ASSOC); 

      foreach($result_chat as $row_chat) { 
      print($row_chat['data']."/n"); 
      } 

      " 
    <HTML Code, bla bla bla> 
    "; 
} ?> 

stelle ich Ihnen so etwas wie dieses ment übernehmen:

<?php 
foreach($result as $row_conv) { 
    echo "<HTML Code, bla bla bla>"; 

    $stmt = $user_index->runQuery("SELECT * FROM chat WHERE user_id=:uid AND conversation_id=:conv_id ORDER BY message_id DESC"); 
    $stmt->bindparam(":uid",$_SESSION['userSession']); 
    $stmt->bindparam(":conv_id",$row_conv['conversation_id']); 
    $stmt->execute; 
    $result_chat = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    foreach($result_chat as $row_chat) { 
     print($row_chat['data']."/n"); 
    } 

    echo "<HTML Code, bla bla bla>"; 
} 
?> 
+0

Ich werde verdammt sein! Das völlig übersehen. –

+0

@BasitSaeed Es hat eine Weile gedauert, bis ich es gesehen habe – RiggsFolly

+0

Also, kann ich den Fehler beheben? Und das '.' muss da sein, oder ein anderer Fehler erscheint. Ich habe den Code in der Frage den vollständigen Code –

0

Wenn Sie Wenn Sie XAMPP verwenden, müssen Sie sicherstellen, dass Sie über eine Version verfügen, die mit PDO-Anweisungen umgehen kann.

Verwandte Themen