在PHP中的mysql查询中的内联变量无法正常工作

时间:2015-11-10 10:24:14

标签: php mysql mysqli

我有以下php代码,

<?php
    $subject_set = mysqli_query($db_link, 'SELECT * FROM subjects');

    if(!$subject_set){
        die("Database subjects query failed: ".mysql_error());
    }

    while ($subject=mysqli_fetch_array($subject_set)) {
        echo "<li>{$subject["menu_name"]}</li>";
            $page_set = mysqli_query($db_link, 'SELECT * FROM pages WHERE subject_id= {$subject["id"]}');
            // $page_set = mysqli_query($db_link, 'SELECT * FROM pages WHERE subject_id='.$subject["id"]);

            if(!$page_set){
                die("Database pages query failed: ".mysql_error());
            }

            echo "<ul class=\"pages\">";

            while ($page=mysqli_fetch_array($page_set)) {
                echo "<li>{$page["menu_name"]}</li>";
            }

            echo "</ul>";

        }
    ?>

当我运行此代码时,当我获得'page_set'值时,它会给我一个错误。在行$page_set = mysqli_query($db_link, 'SELECT * FROM pages WHERE subject_id= {$subject["id"]}'); 但我使用注释行而不是上面的行代码工作正常。 mysql_error()也没有向我显示错误。

3 个答案:

答案 0 :(得分:3)

http://docs.php.net/language.types.string

注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号字符串中出现时不会扩展。

答案 1 :(得分:1)

由于$subject未被视为variable,因此在代码中将其用作字符串。使用

 $page_set = mysqli_query($db_link, "SELECT * FROM pages WHERE subject_id={$subject['id']}");

答案 2 :(得分:0)

更改

    $regis = new ltd_owner;
    $regis->owner_name = $register['firstname'] . ' ' . $register['lastname'];
    $regis->represent_company_id = $register['isRepresent'];
    $regis->gender = $register['sex'];
    $regis->address_id = '7598';
    $regis->nationality_id = '24';
    $regis->save();

$page_set = mysqli_query($db_link, 'SELECT * FROM pages WHERE subject_id= {$subject["id"]}');

因为PHP变量不会被处理,除非它们是双引号字符串。