Проблемы с отображением PHP
Вопрос
Я извлекаю сообщения из mysql с использованием PHP для отображения на определенной странице. Вместо отображения заголовка сообщения в назначенной строке заголовка и сообщения в указанном текстовом поле основного текста ... не отображается содержимое, а заголовок отображается в URL. Чего мне не хватает в моем запросе? Или что происходит?
/*--Here is my query--*/
$query = "SELECT * FROM `Messages` WHERE `id` = '" .$messageid. "'";
$request = mysql_query($query,$connection) or die(mysql_error());
$Readmessages = mysql_fetch_array($request);
$query = "SELECT * FROM `Users` WHERE `id` = '".$Readmessages['sentFrom'] ."'";
$request2 = mysql_query($query,$connection);
$sender = mysql_fetch_array($request2);
/*--Here is my code--*/
Решение
Мой совет - выполнять все ваши запросы в приложении MySQL, таком как PHPMyAdmin, и убедиться, что вы получите желаемые результаты. Это всегда то, что я делаю, когда сталкиваюсь с проблемой запроса, запускаю запрос в приложении, поэтому я уверен, что сам запрос работает. Если вы используете Mac, я рекомендую Sequel Pro (это бесплатно).
Извините за задержку в помощи.
Другие советы
Прежде всего, вам не нужно использовать. (добавить) в $ messageid - vis:
$query = "SELECT * FROM `Messages` WHERE `id` = '$messageid'";
Во-вторых, проверьте, действительно ли вы вернули строку
и (вот этот клинчер) используйте mysql_fetch_assoc ()
вместо mysql_fetch_array ()
- иначе вы не получите имена полей.
if ( $Readmessages = mysql_fetch_assoc($request) )
{
$sentfrom = $Readmessages['sentFrom'];
if (strlen($sentfrom) > 0)
{
$query = "SELECT * FROM `Users` WHERE `id` = '$sentfrom'";
...
}
}
если вы хотите проверить свой запрос, вы можете вывести его в html и посмотреть на источник:
echo "<!-- <sql>$query</sql> -->";
Когда код делает что-то, вы этого не ожидаете - дважды проверьте свои предположения.
1) Убедитесь, что $ messageid заполнен тем, что вам нужно
2) Убедитесь, что возвращаемая строка не равна нулю, т. е. она работает, только данные равны нулю