Вот мой оригинальный запрос, который работает
Select * FROM story st, sentences s, speaker sp WHERE (st.lesson_id = '1' AND st.speaker_id = sp.speaker_id AND st.sentence_id = s.sentence_id)
Когда я пытаюсь добавить заказ, он ломается.
Select * FROM story st, sentences s, speaker sp WHERE (st.lesson_id = '1' AND st.speaker_id = sp.speaker_id AND st.sentence_id = s.sentence_id) ORDER BY st.story_in_lesson_id ASC
Не могу понять, почему он ломается.
EDIT: Вот ошибка, я получаю Неустранимая ошибка: вызов функции-члена fetch_object ()
EDIT: мой PHP-код
$result = $mysqli->query("Select * FROM story st, sentences s, speaker sp WHERE st.lesson_id = '1' AND st.speaker_id = sp.speaker_id AND st.sentence_id = s.sentence_id ORDER BY st.story_in_lesson_id ASC"); while ($value = $result->fetch_object()) { //never goes in here fails at the fetch_object() }
РЕДАКТИРОВАТЬ:
Возможно ли, что это не работает, потому что я пытаюсь запросить несколько таблиц? Только одна из таблиц имеет story_in_lesson_id, которая является исторической таблицей. Когда я запускаю запрос только на этой таблице, он находит find.
РЕДАКТИРОВАТЬ:
Больше информации, скопировал БД на мою работу Mac и работает запрос !!! Но почему это не работает на моем компьютере? Кстати, я строго проверяю запрос, просто запустив его внутри Sequel Pro.
Пожалуйста, удалите свое место, где состояние дорого ….. может быть, оно работает, и, пожалуйста, дайте мне ответ, что вы получаете.
SELECT * FROM story st INNER JOIN sentences s ON st.sentence_id = s.sentence_id INNER JOIN speaker sp ON st.speaker_id = sp.speaker_id ORDER BY st.story_in_lesson_id ASC
Вы должны проверить, что st.story_in_lesson_id
существует в вашей story table
и предотвратить Fatal error: Call to a member function fetch_object()
вы должны попробовать, как,
$query = "Select * FROM story st, sentences s, speaker sp WHERE st.lesson_id = '1' AND st.speaker_id = sp.speaker_id AND st.sentence_id = s.sentence_id ORDER BY st.story_in_lesson_id ASC"; // check story_in_lesson_id exists in story table if ($result = $mysqli->query($query)) { while ($value = $result->fetch_object()) { // while code } // while ends } // if result ends
Попробуй это:
SELECT * FROM story st INNER JOIN sentences s ON st.sentence_id = s.sentence_id INNER JOIN speaker sp ON st.speaker_id = sp.speaker_id WHERE st.lesson_id = '1' ORDER BY st.story_in_lesson_id ASC
Спасибо вам за помощь! Я решил проблему !!!
В конце концов, это проблема с правами на запись файлов. Я понял это, выполнив мой запрос в Sequel Pro, который сделал ошибку о каком-либо файле, расположенном в / var / folders / 41 / some large number / T /. Я пошел в директорию и разрешил писать доступ, попробовал запрос в Sequel Pro, и это сработало. Затем я иду на свой php и пробую его там, и это сработало.
Если кто-нибудь может ответить, почему это произошло? Все ли запросы записываются в файл журнала или что-то в этом роде? Если кто-то может поделиться еще немного внутри.