<?php
$sample = 0;
if($sample ==0)
{
$displayinner = '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
$displayouter = '<td><label>Privileges:</label></td>
<td><select name = "Privilege" id = "Privilege" multiple="multiple">
<?php
$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames))
echo $displayinner;
?>
</select></td>
</tr>
<tr>';
echo $displayouter;
}
?>
我只收到一个没有任何数据的下拉框。请帮忙,我做错了什么?
答案 0 :(得分:1)
是的,这将无效 - 存在很多问题,您的“模板”代码将被解析,这将导致错误,并且您无法嵌套<?php
这样的块。为了得到你想要的东西,试试这个为初学者:
$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';
$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
$displayouter .= '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
}
$displayouter .= '</select></td></tr><tr>';
echo $displayouter;
如果您以后不需要变量$displayouter
,则可以只改为echo
所有内容,如果这是模板代码则完全break out of the PHP block。请注意使用.=
,它将数据附加到现有变量。
这里有很多可能的安全漏洞,但希望这有助于查看一些正常工作的代码。确保在所有未知的HTML输出上使用htmlspecialchars
。
答案 1 :(得分:0)
<?php
$sample = 0;
if($sample == 0)
{
$displayPre = '<td><label>Privileges:</label></td>
<td><select name = "Privilege" id = "Privilege" multiple="multiple">';
$displayPost = '</select></td>
</tr>
<tr>';
$PrivilegeNames = mysql_query("SELECT * FROM privilege");
echo $displayPre;
while($row = mysql_fetch_array($PrivilegeNames))
echo '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
echo $displayPost;
}
?>
内部php标签未正确解析,尝试上面的代码,它实现了前后部分的表单,因此您不需要在字符串中放置新的php块
答案 2 :(得分:0)
Wesley Murch很接近,但遗漏了一些内容:围绕该值引用,并使用htmlentities
来阻止XSS注入。
$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';
$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
$displayouter .= '<option value="' . htmlentities($row['privilege_ID']) . '">' . htmlentities($row['privilege_name']) . '</option>';
}
$displayouter .= '</select></td></tr><tr>';
echo $displayouter;
答案 3 :(得分:0)
我没有测试语法,但是你做了一些错位。
<?php
$sample = 0;
if($sample ==0)
{
$displayinner = '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
?>
<td><label>Privileges:</label></td>
<td><select name = "Privilege" id = "Privilege" multiple="multiple">
<?php
$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames))
echo $displayinner;
?>
</select></td>
</tr>
<tr>
<?php
}
?>