У меня есть код, пытающийся проверить, существует ли значение в кулоне, но он создает только пробелы, даже если сам запрос производит правильный вывод в phpMyAdmin. Мой код вызывается с помощью include_once на другой странице. Что я делаю неправильно? Единственный вывод, который я получаю, — это пустая белая страница (если выполняется напрямую), а в противном случае — другая пустая белая страница (если используется путем включения с помощью include_once на другой странице). Я пытался использовать эхо, возврат и т. Д. Также безрезультатно. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: я знаю, что я должен использовать mysqli или pdo, но это мод на сайте и в приложении LEGACY; поэтому, пожалуйста, воздержитесь от примечаний об этом, а также от использования устаревших тегов 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;
}
?>
РЕДАКТИРОВАНИЕ: После предложения проверить мои предположения, представленного Биллом Карвином (* спасибо), я сделал несколько подходящих модов, и теперь следующий код работает при прямом вызове, но не когда включен как включенная страница. Рабочий (непосредственно вызываемый) код:
<?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
}
?>
Включение находится внутри класса, затем функции, затем внутри:
<<
<!-- some html code content here -->
<?php include_once("./lspcheck.php");?>
<!-- some more html code content here -->
EOO;
Нужна ли особая обработка include_once, когда он помещен в HTML-код, обернутый так, как указано выше?
Я рекомендую вам начать проверять свои предположения.
Например, при доступе к ассоциативному массиву вы должны использовать кавычки вокруг ключа, иначе PHP думает, что вы используете константу PHP, а не строку. Если константа с таким именем не определена, по умолчанию будет использоваться строка с таким же написанием, но если константа является определено, его значение используется.
$account = mysql_real_escape_string($_SESSION['AccountSession']);
error_log("AccountSession = '$account'");
Аналогично, выведите некоторую отладку для каждого шага, чтобы убедиться, что это то, что вы думаете. использование error_log()
потому что это выведет в журнал ошибок сервера http вместо вашего буфера вывода HTML.
$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
Других решений пока нет …