我有代码试图检查coulmn中是否存在值,但它只产生空格,即使查询本身在phpMyAdmin中产生正确的输出。然后通过在另一个页面中使用include_once来调用我的代码。我究竟做错了什么?我收到的唯一输出是空白页面(如果直接运行)和另一个空白页面(如果在另一页中使用include_once包含使用)。我试过使用echo,return等也无济于事。请注意:我知道我应该使用mysqli或pdo,但这是一个LEGACY网站和应用程序的mod;所以请不要注意那个以及过时的html标签用法。另请注意:$ _Session [AccountSession]以前(在另一个页面中)使用SQL注入的预防措施进行了清理,所以请再次注意这一点。
我目前的代码是:
<?php
// Start the session
session_start ();
ob_start();
// Include the necessary classes
include_once("../../includes/dbaccess.class.php");
// Connect to the database
$db = new dbAccess();
if (!$db->connect()) die("Not connected");
$lspresult = mysql_query("SELECT * FROM Accounts WHERE Account='$_SESSION[AccountSession]' AND LSP='1'");
if(mysql_num_rows($lspresult) == 0) {
// row not found
} else {
// row found
<<<EOO
<tr margin-left="40px">
<td width="10%"> </td>
<td width="80%">
<input type="checkbox" valign="top" name="do_LSP" id="do_LSP" value="1" onClick="this.form.do_SexOffend.checked=1">
<label for="do_LSP"> <font color="blue"><b>La State Police Background Check</b></font>
</label>
</td>
<td width="10%"> </td>
</tr>
EOO;
}
?>
编辑:在建议测试Bill Karwin(*谢谢)提供的假设之后,我做了一些适当的mods,现在以下代码在直接调用时有效,但在包含为包含页面时则不行。工作(直接调用)代码是:
<?php
// Start the session
session_start ();
ob_start();
// Include the necessary classes
include_once("../../includes/dbaccess.class.php");
// Connect to the database
$db = new dbAccess();
if (!$db->connect()) die("Not connected");
$lspresult = mysql_query("SELECT * FROM Accounts WHERE Account='$_SESSION[AccountSession]' AND LSP='1'");
if(mysql_num_rows($lspresult) == 0) {
// row not found
} else { ?>
<tr margin-left="40px">
<td width="10%"> </td>
<td width="80%">
<input type="checkbox" valign="top" name="do_LSP" id="do_LSP" value="1" onClick="this.form.do_SexOffend.checked=1">
<label for="do_LSP"> <font color="blue"><b>La State Police Background Check</b></font>
</label>
</td>
<td width="10%"> </td>
</tr>
<?php
}
?>
include在一个类中,然后是一个函数,然后在: &LT;&LT;
<!-- some html code content here -->
<?php include_once("./lspcheck.php");?>
<!-- some more html code content here -->
EOO;
如果将include_once置于上面包含的html代码中,是否需要特殊处理?
答案 0 :(得分:1)
我建议你开始测试你的假设。
例如,在访问关联数组时,应该在键周围使用引号,否则PHP认为您使用的是PHP常量,而不是字符串。如果没有定义该名称的常量,它将默认为相同拼写的字符串,但如果定义 ,则使用其值。
$account = mysql_real_escape_string($_SESSION['AccountSession']);
error_log("AccountSession = '$account'");
同样,为每一步输出一些调试,以确保它符合您的想法。使用error_log()
因为它会输出到http服务器错误日志而不是HTML输出ob缓冲区。
$sql = "SELECT * FROM Accounts WHERE Account='{$account}' AND LSP='1'"
error_log("SQL = '$sql'");
$lspresult = mysql_query($sql);
if(mysql_num_rows($lspresult) == 0) {
error_log("Row not found");
// row not found
} else {
error_log("Row was found");
// row found