如何解决php中未定义的错误
一次又一次地犯这个错误 因为,您正在尝试访问未定义的数组的索引。在您的情况下,您正试图从数组如何解决php中未定义的错误,php,Php,一次又一次地犯这个错误 因为,您正在尝试访问未定义的数组的索引。在您的情况下,您正试图从数组$\u GET访问索引itr\u no和epi\u id 验证请求的URL查询字符串(如果它包含或可能是您的表单) 或 在访问该值之前,请检查该值是否已设置 <?php $conn = new mysqli("localhost", "root", "", "hcis") or die(mysqli_error()); $q = $conn->query("SELECT * FR
$\u GET
访问索引itr\u no
和epi\u 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]'") or die(mysqli_error());
$f = $q->fetch_array();
?>
$\u GET
访问索引itr\u no
和epi\u 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]'") or die(mysqli_error());
$f = $q->fetch_array();
?>
当您将url变量(用户直接输入)传递到数据库查询时,您的查询易受攻击 用于检查我们使用的变量是否已定义 更正代码应为:
if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
当您将url变量(用户直接输入)传递到数据库查询时,您的查询易受攻击 用于检查我们使用的变量是否已定义 更正代码应为:
if(isset($_GET['itr_no']) && isset($_GET['epi_id'])){
isset()
用于检查变量是否已设置且不是null
。详情:
因此,在访问$variable
之前,应该使用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();
上面的示例确保,如果设置了$example['id']
,则可以访问它。如果没有isset,即使$example['id']
为null
或未定义,也会运行echo
,这将引发错误
@techiemickey:然而,您的错误是由于您以错误的方式访问var造成的。您可以使用$\u GET['itr\u no']而不是$\u GET[itr\u no]isset()
用于检查变量是否已设置且不为空。详情:
因此,在访问$variable
之前,应该使用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();
上面的示例确保,如果设置了$example['id']
,则可以访问它。如果没有isset,即使$example['id']
为null
或未定义,也会运行echo
,这将引发错误
@techiemickey:然而,您的错误是由于您以错误的方式访问var造成的。您可以使用$\u GET['itr\u no']而不是$\u GET[itr\u no]来检查$\u GET请求值
if (isset($example['id']) {
echo $example['id'];
}
<?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();
}
?>
用于检查您的$\u GET请求值
if (isset($example['id']) {
echo $example['id'];
}
<?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['id']
您编辑的代码
$itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
$epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
您需要围绕您的表单数据,例如,$GET['id']
您编辑的代码
$itr_no = isset($_GET['itr_no']) ? $_GET['itr_no'] : '';
$epi_id = isset($_GET['epi_id']) ? $_GET['epi_id'] : '';
这是一个更好的解决方案,因为它分离了数据源,允许您在点击数据库代码之前执行某种验证。@TechieMickey,请通过打印您从数据库中获得的内容来调试代码,您将得到问题。这是一个更好的解决方案,因为它分离了数据源,并允许您在访问数据库代码之前执行某种验证。@TechieMickey,请通过打印您从数据库中获得的内容来调试代码,您将得到问题