奇怪的mysql和php行为

时间:2016-11-10 14:23:54

标签: php mysql sql

这是一个奇怪的问题 但我使用查询来根据名称从数据库中获取某些值 该名称存在于数据库中,如果我添加一个新产品,它将获取该名称 但在旧产品上却没有

这是我的数据库结构 Vaporama.be SQL pdf

演示网站 http://vaporama.be

pphp代码

try {
    $stmt = $db->prepare("SELECT * FROM category WHERE cat = 'product' ORDER BY name ASC");
    $stmt->execute();
    $category = $stmt->fetchall(PDO::FETCH_ASSOC);
    foreach($category as $cat) {
        $naam = $cat['name'];
        //subcats query en count
        $stmt2 = $db->prepare("SELECT * FROM products WHERE cat = :name GROUP BY (merk) ORDER BY name ASC");
        $stmt2->execute(array(':name' => $naam));
        $count = $stmt2->rowcount();
        //echo cats
        echo "
                <li class='dropdown'>
                    <a class='dropdown-toggle' href='#'>
                        {$naam} ({$count})
                    </a>
            ";
        $subcat = $stmt2->fetchall(PDO::FETCH_ASSOC);
        //echo subcats
        echo "<ul class='dropdown-menu'>";
        foreach($subcat as $sub) {
            $stmt3 = $db->prepare("SELECT * FROM merken WHERE name = :merk ORDER BY name ASC");
            $stmt3->execute(array(':merk' => $sub['merk']));
            $merk = $stmt3->fetch(PDO::FETCH_ASSOC);
            echo "
                    <li><a href='//{$_SERVER['SERVER_NAME']}/merk?merk={$merk[id]}'>{$sub[merk]}</a></li>
                ";
        }
        echo "</ul>";
    }
}
catch(Exception $e) {
    echo '<h2><font color=red>';
    var_dump($e->getMessage());
    die ('</h2></font> ');
}

基本上它应该显示它并抓住id 现在,它正是它没有做到的

但如果我添加新产品,那么它确实有效 更有趣的是,我的代码对GROUP说,所以所有的名字都应该是unic 在我的下拉列表中,我现在看到2次JOYETECH,其中第一个不包含id,第二个包含我的id(33)

那么为什么它没有对结果进行分组并且没有像它需要那样找回它? 这是WORKING项目的数据库(标识33),上面是非工作项目

  

id |名字|默克
  64 |测试| JOYETECH

我没有看到任何区别? 来自PowerChaos的问候

以下是现在的截图 no id and double name

0 个答案:

没有答案