我尝试将没有现有ID的查询重定向到主页,但总是会收到由
等条目引起的错误"<?php echo $row['script']; ?>"
如果我确实检查了&#39; $ result&#39;: &#34;未定义的变量:第37行的C:\ www \ sts3 \ page.php中的行...&#34;
require_once("php/db_connect.php");
if(isset($_GET['id'])) {
if( $_GET['id'] == '' || !is_numeric($_GET['id']) ) {
$id = 1;
}
else {
$id = mysqli_real_escape_string($connection, $_GET['id']);
$query = "SELECT * FROM content WHERE ID = '" . $id . "'";
$result = mysqli_query($connection, $query);
if (empty($result)) {
header("Location:index.php"); // NOT WORKING HERE
die();
}
$row = mysqli_fetch_assoc($result);
}
}
答案 0 :(得分:0)
我认为,当empty($result))
不应为空时,即使查询未返回任何内容,您的问题也可能是$result
。相反,请尝试使用mysqli_num_rows
:
require_once("php/db_connect.php");
if(isset($_GET['id'])) {
if( $_GET['id'] == '' || !is_numeric($_GET['id']) ) {
$id = 1;
}
else {
$id = mysqli_real_escape_string($connection, $_GET['id']);
$query = "SELECT * FROM content WHERE ID = '" . $id . "'";
$result = mysqli_query($connection, $query);
if (mysqli_num_rows($result) > 0) {
header("Location:index.php"); // NOT WORKING HERE
die();
}
$row = mysqli_fetch_assoc($result);
}
}
答案 1 :(得分:0)
$result
如果成功执行则不是empty
,您需要从$ result中获取行数以确定您是否找到了结果:
if (mysqli_num_result($result) > 0) {
header('Location: index.php');
exit;
}
您还应该验证/过滤您的输入。
PHP提供了一组最小的验证/过滤功能:PHP Filter functions
在您的情况下,您应该过滤INT
:
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!$id) { // Validation fails. It is recommended you return an error to your user, but in this case I'm going to follow your logic.
$id = 1;
}
// Do your database queries from here...
答案 2 :(得分:0)
$ row定义在&#34; if(isset($ _ GET [&#39; id&#39;]))&#34; -block我想你离开这个if-block时就会这样将被取消,因为它之前没有定义。
在其中一个较新版本的php中,您无法使用isset()检查数组索引,最好使用数组array_key_exists()。