【问题标题】:2 table MYSQL PHP query and application with PHP to populate a HTML grid display2 表 MYSQL PHP 查询和应用程序用 PHP 填充 HTML 网格显示
【发布时间】:2014-04-09 05:14:13
【问题描述】:

您好,感谢您查看我的问题,我会深入探讨。

我正在寻找存储在 MySQL 数据库中两个不同表中的一堆数据,将每一行的值分配到数组中(如果这是最好的方法),然后使用这些数据填充 html 网格元素(所以每一行用于填充网格中的一个框)。

这最终将作为 php-mysql webapp 中线程的网格预览,用户将线程显示为“预览项目”,他们可以单击以完全打开线程。 到目前为止,这就是我处理任务的方式,您对如何做同样的事情有任何提示或建议吗?

idea_thread 包含有关线程的信息,thumb 包含用于缩略图和网格框边的图像。

    $result = $stmt = $mysqli->query("SELECT i.idea_id, i.user_id, i.time, i.title, i.Brief, t.location, t.width, t.height, t.colour 
FROM idea_thread i, thumb t
    WHERE t.idea_id = i.idea_id 
        ORDER BY i.idea_id DESC LIMIT 150,5");  
while ($row = $stmt->fetch_array(MYSQLI_ASSOC)){

        $id = $row[0];
        $user = $row[1];
        $date = $row[2];
        $title = $row[3];
        $briefdescrip = $row[4];
        $photolocation = $row[5];
        $width = $row[6];
        $height = $row[7];
        $color = $row[8];
};

?>

感谢您的阅读以及您提供的任何提示。

由于某种原因,这段代码只返回一个白屏?有什么想法吗?

由于建议而应用的编辑,反映在我的代码中**

【问题讨论】:

    标签: php html mysql sql grid


    【解决方案1】:

    请试试这个:

     $mysqli = 'do connect';
    
       $stmt =  $mysqli->prepare("
        SELECT * i.idea_id, 
                 i.user_id, 
                 i.time, 
                 i.title, 
                 i.Brief, 
                 t.location, 
                 t.width, 
                 t.height, 
                 t.colour 
        FROM idea_thread i
            LEFT OUTER JOIN thumb t ON t.idea_id = i.idea_id 
        ORDER BY i.idea_id DESC"); 
    
       $stmt->execute();
    
    
         while ($row = $stmt->fetch()) {
             //do staff here
         }
    

    参考:http://www.php.net/manual/en/mysqli-stmt.fetch.phphttp://dev.mysql.com/doc/refman/5.0/en/join.html

    【讨论】:

      【解决方案2】:

      您同时使用 mysql (mysql_fetch_array) 和 mysqli,并且您确定要进行外部连接吗?一种简单的连接方法是指定多个表,其标识符与您一样(i 和 t),然后指定它们的连接位置,如下所示:

      SELECT i.idea_id, i.user_id, i.time, i.title, i.Brief, t.location, t.width, t.height, t.colour FROM idea_thread i, thumb t WHERE t.idea_id = i.idea_id ORDER BY i.idea_id DESC

      即使没有相关的 id,左外连接也会包括所有线程,这可能是您所追求的:

      SELECT i.idea_id, i.user_id, i.time, i.title, i.Brief, t.location, t.width, t.height, t.colour FROM idea_thread i LEFT OUTER JOIN thumb t ON t.idea_id = i.idea_id ORDER BY i.idea_id DESC

      由于您没有提供任何值,因此您不需要使用准备,只需使用 mysqli 查询即可。

      更新:注意到您在 SELECT 中也有 *。这将选择所有列,然后选择您指定的列,从而进一步排除查询。

      所以对于 mysqli,你会想要:

      $stmt = $mysqli->query(...);
      while ($row = $stmt->fetch_array(MYSQLI_NUM)) {
      
       ... logic here ...
      
      }
      

      我在 fetch_array 中使用了 MYSQLI_NUM,因为您是按编号引用列,您也可以使用 MYSQLI_ASSOC:http://us2.php.net/manual/en/mysqli-result.fetch-array.php

      【讨论】:

      • 谢谢大佬,我会做相应的修改!在我投入大量时间之前,我只是把它作为一个快速证明来做——这样我就可以得到与这些完全一样的建议。
      • 更新:如果您指定列,则不要在 SELECT 中使用 *。
      • 谢谢伙计,那个 * 不是故意留在那里的!
      • 我还为 mysqli 添加了 fetch_array,希望能帮助你到达你需要的地方。
      • 在仔细研究您的脚本之后,左外层可能更适合您使用。我认为您可能希望获得线程,即使它们没有相关的拇指(缩略图)?不过,至少您知道一种新的连接方式。
      猜你喜欢
      • 2016-03-03
      • 2015-09-05
      • 2011-11-03
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多