在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']}");