sql查询无法使用order by

时间:2013-12-16 04:46:27

标签: php mysql sql sql-order-by

这是我的原始查询

 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

无法弄清楚它为什么会破碎。

编辑: 这是我得到的错误致命错误:调用成员函数fetch_object()

编辑: 我的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,即故事表。当我在该表上运行查询时,它可以找到。

编辑:

更多信息,将数据库复制到我的工作Mac并且查询正常工作!但为什么它不能在我的电脑上工作?顺便说一下,我现在通过在Sequel Pro中运行它来严格测试查询。

4 个答案:

答案 0 :(得分:3)

请删除你的亲爱的地方.....可能它正在运作,请给我回复你得到的结果。

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 

答案 1 :(得分:1)

您必须检查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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

感谢您的帮助!我已经解决了这个问题!

最后它最终成为文件写入权限问题。我通过在Sequel Pro中运行我的查询来解决这个问题,该问题引发了一个关于/ var / folders / 41 /某些大数字/ T /的文件的错误。我去了dir并且允许写入访问尝试了Sequel Pro中的查询并且它有效。然后我去我的PHP并尝试它,它的工作原理。

如果有人能回答为什么会这样?是否所有查询都写入日志文件或类似的内容?如果有人可以在里面分享更多。

相关问题