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

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

问题描述:

I have following php code,

<?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>";

        }
    ?>

when I run this code it gives me an error when I getting 'page_set' values.In line $page_set = mysqli_query($db_link, 'SELECT * FROM pages WHERE subject_id= {$subject["id"]}'); But I used commented line instead of the above line code works fine. Also mysql_error() doesn't show me the error.

我有以下php代码, p>

 &lt;?php  
 $ subject_set = mysqli_query($ db_link,'SELECT * FROM subject'); 
 
 if if(!$ subject_set){
 die(“数据库主题查询失败:”。mysql_error()); 
} \  n 
 while($ subject = mysqli_fetch_array($ subject_set)){
 echo“&lt; li&gt; {$ subject [”menu_name“]}&lt; / li&gt;”; 
 $ 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 if(!$ page_set){
 die(“数据库页面查询失败:”。mysql_error()); 
} 
 
 echo“&lt; ul class = \”pages \“&gt;”  ; 
 
 while($ page = mysqli_fetch_array($ page_set)){
 echo“&lt; li&gt; {$ page [”menu_name“]}&lt; / li&gt;”; 
} 
 
 echo“  &lt; / ul&gt;“; 
 
} 
?&gt; 
  code>  pre> 
 
 

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

Change

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

to

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

because PHP variables won't be processed unless they are in double-quoted strings.

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

Note: Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.

Because $subject not treated as variable it is used as string in your code. Use

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