<?php
$conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
$q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
$f = $q->fetch_array();
?>
这是我的代码。我收到此错误
注意:未定义的索引:第25行的C:\ xampp \ htdocs \ thesis \ admin \ epi_print.php中的itr_no
注意:未定义的索引:第25行的C:\ xampp \ htdocs \ thesis \ admin \ epi_print.php中的epi_id
我尝试使用Google搜索,发现我必须使用 isset
,但我不知道在哪里放置 isset
。
答案 0 :(得分:2)
当您将url变量(用户输入直接)传递给数据库查询时,您的查询很容易受到攻击。
使用isset()检查我们正在使用的变量是否已定义。
更正后的代码应为:
$itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
$epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
$itr_no = $conn->real_escape_string($itr_no);
$epi_id = $conn->real_escape_string($epi_id);
$conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
$q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$itr_no' && `epi_id` = '$epi_id'") or die(mysqli_error());
$f = $q->fetch_array();
答案 1 :(得分:1)
一次又一次地出现这个未定义的错误
因为,您正在尝试访问未定义的数组的索引。在您的情况下,您尝试从数组itr_no
访问索引epi_id
和$_GET
。
或
在访问之前检查值isset
if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
答案 2 :(得分:1)
使用isset()检查您的$ _GET请求值,
<?php
$conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
//Checkes Whether itr_no And epi_id is available or not
//runs when all are available
if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
$q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
$f = $q->fetch_array();
}
?>
使用empty()检查$ _GET请求值
<?php
$conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
//Checkes Whether itr_no And epi_id is available or not
//runs when all are available
if(!empty($_GET['itr_no']) && !empty($_GET['epi_id'])){
$q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET[itr_no]' && `epi_id` = '$_GET[epi_id]'") or die(mysqli_error());
$f = $q->fetch_array();
}
?>
如果您不想使用,那么在启动时您应该使用检查您的$ _GET请求值,例如,
$itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
$epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
答案 3 :(得分:0)
isset()
用于检查变量是否已设置且不是null
。详情:https://php.net/manual/en/function.isset.php。
因此,在访问isset()
之前,您应该使用$variable
。例如:
if (isset($example['id']) {
echo $example['id'];
}
上面的示例确保如果设置了$example['id']
,您就可以访问它。如果您没有设置isset,即使echo
为$example['id']
或未定义,null
也会运行 - 这会引发错误。
@techiemickey:但是,您错误的原因是您以错误的方式访问var。你喊着用 $ _ GET [&#39; itr_no&#39;] 而不是 $ _ GET [itr_no]
答案 4 :(得分:0)
您需要围绕形成数据,$GET['id']
您编辑的代码
<?php
$conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error());
$q = $conn->query("SELECT * FROM `vaccine` NATURAL JOIN `itr` WHERE `itr_no` = '$_GET['itr_no']' && `epi_id` = '$_GET['epi_id']'");
$f = $q->fetch_array();
?>