是什么赋予了?应在其中生成结果的空白页面

时间:2017-10-31 14:32:59

标签: php mysql

我有代码试图检查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%">&nbsp;</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%">&nbsp;</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%">&nbsp;</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%">&nbsp;</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代码中,是否需要特殊处理?

1 个答案:

答案 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