错误:PHP中的数组到字符串转换

时间:2018-05-26 05:30:29

标签: php

尝试执行我的功能时出现此错误。

我的数据库的列是100%正确的,我测试了每个请求并且它有效!

Error :

[26-May-2018 05:21:49 UTC] PHP Notice:  Array to string conversion in C:\wamp64\www\gcm\database.php on line 82

[26-May-2018 05:21:49 UTC] PHP Warning:  mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\gcm\database.php on line 88

我的功能:

function getHistoriqueNotification($user,$mdp){
$com = new DbConnect();
$message=array();
$sql="select UTLR_UID from adm_utilisateurs where UTLR_LOGIN='$user' and UTLR_MDP='$mdp'";
$result=mysqli_query($com->getDb(),$sql);
$getID = mysqli_fetch_assoc($result);
$userID = $getID['UTLR_UID'];
$sqli = "SELECT alr_alertes.ALRT_DES_LN1,alr_alertes.ALRT_PHOTO,alr_historiques.AHIS_DES_LN1,alr_historiques.AHIS_DATEHEURE from alr_alertes,alr_historiques WHERE alr_alertes.ALRT_UID=alr_historiques.ALRT_UID AND alr_historiques.UTLR_UID=$userID";
$resulti = mysqli_query($com->getDb(),$sqli);
while($row=mysqli_fetch_assoc($resulti)){
$message = array('photo' =>$row['ALRT_PHOTO'] , 'titre' => $row['ALRT_DES_LN1'] , 'dateHeure' =>$row['AHIS_DATEHEURE'] , 'detail' => $row['AHIS_DES_LN1']);
}

return $message;
}

1 个答案:

答案 0 :(得分:0)

使用mysqli时,您需要释放每个查询的结果。由于您使用$ sql进行了查询,然后使用$ sqli进行了第二次查询,而没有在两个查询之间释放结果,因此导致了问题。

请阅读以下mysqli功能: http://php.net/manual/en/mysqli-result.free.php

注意我已关闭您的第一个连接,然后再建立第二个连接。我认为您可以通过保持相同的连接但在下一个查询之前调用mysqli_free_result()来实现此目的。我并不熟悉mysqli,但我认为这是对的。

function getHistoriqueNotification($user, $mdp){

$com = new DbConnect();
$message=array();
$sql = "select UTLR_UID from adm_utilisateurs where UTLR_LOGIN='$user' and UTLR_MDP='$mdp'";
$result = mysqli_query($com->getDb(),$sql);
$getID = mysqli_fetch_assoc($result);
$userID = $getID['UTLR_UID'];

mysqli_close($com);
unset($com);

$com1 = new DbConnect(); //This is really just a test.

$sqli = "SELECT alr_alertes.ALRT_DES_LN1,alr_alertes.ALRT_PHOTO,alr_historiques.AHIS_DES_LN1,alr_historiques.AHIS_DATEHEURE from alr_alertes,alr_historiques WHERE alr_alertes.ALRT_UID=alr_historiques.ALRT_UID AND alr_historiques.UTLR_UID=$userID";

if ($resulti = mysqli_query($com1->getDb(), $sqli)){

    while($row = mysqli_fetch_assoc($resulti)){

    //Added the [] after message.
    $message[] = array(
      'photo'     =>$row['ALRT_PHOTO'], 
      'titre'     =>$row['ALRT_DES_LN1'], 
      'dateHeure' =>$row['AHIS_DATEHEURE'],
      'detail'    =>$row['AHIS_DES_LN1']
    );

  }

}else{

  echo("Error description: " . mysqli_error($com1->getDb()));

  }

print_r($message); //<---This will show you if you have a result.
return $message;

}