Cette requête fonctionne très bien sur Sequel Pro:requête fonctionne sur Sequel Pro mais pas sur mon script php
SELECT t1.* FROM `erapido_messages` t1
LEFT OUTER JOIN `erapido_messages` t2 ON `t1.sender_id` = `t2.sender_id`
AND (`t1.msg_date` < `t2.msg_date` OR `t1.msg_date` = `t2.msg_date` AND `t1.sender_id` != `t2.sender_id`)
WHERE `t2.sender_id` IS NULL AND `t1.sender_id`!= `0` AND `t1.receiver_id`= 28
ORDER BY `t1.msg_date` DESC;
Quand je l'utilise sur mon script php il renvoie une erreur. Ceci est la requête complète en php:
$query = "SELECT t1.* FROM `erapido_messages` t1
LEFT OUTER JOIN `erapido_messages` t2 ON `t1.sender_id` = `t2.sender_id`
AND (`t1.msg_date` < `t2.msg_date` OR `t1.msg_date` = `t2.msg_date` AND `t1.sender_id` != `t2.sender_id`)
WHERE `t2.sender_id` IS NULL AND `t1.sender_id`!= `0` AND `t1.receiver_id`= ?
ORDER BY `t1.msg_date` DESC";
//$sql is my connection and it works fine on other queries
$statement = $sql->prepare($query);
//bind parameters for markers: s = string, i = integer, d = double, b = blob
$statement->bind_param('i', $receiver_id);//$receiver_id is defined
//execute query
$statement->execute();
//store the results; allows to count the rows
$statement->store_result();
//bind result variables
$statement->bind_result($id, $receiver_name, $receiver_img, $receiver_email, $sender_id, $sender_name, $sender_email, $sender_img, $subject, $message, $msg_date);
C'est l'erreur:
Fatal error: Call to a member function bind_param() on boolean in /messages.php on line 53
Je comprends que cette déclaration peut retourner 'faux' si la requête échoue:
$statement = $sql->prepare($query);
Cependant , Je ne peux pas voir ce qui ne va pas dans la requête. Toute aide est la bienvenue!
Merci beaucoup.
Vous devez vérifier si '$ statement' est faux après avoir exécuté' $ statement = $ sql-> prepare ($ query); 'Si c'est faux, vous pouvez rechercher les erreurs avec l'erreur' echo $ sql->; '. Cela donnera plus d'idée sur ce qui ne va pas. – seartun
@JayBlanchard S'il vous plaît lire les commentaires sur le code: // $ sql est ma connexion et cela fonctionne bien sur d'autres requêtes. J'utilise un fichier include où je fais la connexion. Ce n'est pas le problème. –
L'erreur est 'Colonne inconnue' t2.sender_id 'dans' clause where '. Je changeais la requête pour voir si j'obtiendrais des résultats différents et apparemment aucun des alias ne fonctionne correctement. J'ai aussi des erreurs pour '' t1.sender_id''. –