如何调试不再有效的PHP / SQL代码?

时间:2015-10-23 19:52:21

标签: php mysql

我是PHP的新手,但下面是代码。它本质上应该从SQL查询中将一些值加载到数组中,然后使用数组中的值从另一个查询输出。在循环内循环。

奇怪的是,它最初确实起作用,但现在却没有。如果我将这两个查询分开,它们仍能正常工作。因此没有数据库问题,也没有给出错误消息。我只是想知道是否可以使用这种方法,因为它看起来最简单。或者我必须将循环分开吗?

$sql = 'SELECT menuID FROM explore_section1 WHERE menukey="sea-ovr"';
$place = $conn->query($sql);
while($row = $place->fetch_assoc()) {
  $sql2 = 'SELECT url, name FROM explore_items WHERE menuID="'.$row["menuID"].'"';
  $result = $conn->query($sql2);
  while($row2 = $result->fetch_assoc()) {
    echo '<li><a href="'.$row2["url"].'">'.$row2["name"].'</a></li>';
  }     
}   

谢谢!

2 个答案:

答案 0 :(得分:1)

我没有看到2个查询的任何原因,就这么简单:

$sql = 'SELECT s.menuID, i.url, i.name 
        FROM explore_section1 s
        LEFT JOIN explore_items i
        ON s.menuID = i.menuID
        WHERE s.menukey="sea-ovr"';
if($result = $conn->query($sql)) {
    while($row = $result->fetch_assoc()) {
        echo '<li><a href="'.$row["url"].'">'.$row["name"].'</a></li>';
    }
} else { 
    echo "Error:". $conn->error);
}

更新查询应该有效:http://sqlfiddle.com/#!9/76f2f/1

答案 1 :(得分:0)

好的,玩了几个小时后。 MySQL有一个奇怪的事情。我正在导入数据,因为几乎所有地方都建议使用以下结构查询:

LOAD DATA LOCAL INFILE 'C:/data.csv' INTO TABLE explore_items
FIELDS TERMINATED BY ','
ENCLOSED BY ';'
LINES TERMINATED BY '\n'
(field1, field2);

如果只使用一个表,这看起来工作正常并且查询工作但是当你加入它们时他们就不能工作。奇!!我必须导入数据的方式是根据下面的导入说明(在另一个线程中找到):

phpMyAdmin拥有处理CSV导入的必要工具。以下是要遵循的步骤:

  • 准备CSV文件以使字段与MySQL表字段的顺序相同

  • 从CSV中删除标题行(如果有),因此文件中只有数据 转到phpMyAdmin界面,选择左侧菜单中的表

  • 点击顶部的导入按钮

  • 浏览CSV文件

  • 使用LOAD DATA&#34;

  • 选择&#34; CSV选项
  • 输入&#34;,&#34;在&#34;

  • 中终止的&#34;字段中
  • 以与db表

  • 相同的顺序输入列名
  • 点击“go”按钮即可完成。

感谢@Alex所有的时间在那个!!

相关问题