我有一个名为jobs的SQL表,它由一个标题为"jobID"的列组成。作为测试,我需要我的代码让我知道已经输入的jobID是否已经存在于表中。
我现在得到的是,当我输入一个我知道在表中的jobID时,它会返回"OLD",这很好。但当我输入一个新号码时,它根本不会返回任何信息。
if (isset($_GET['customerName']) && isset($_GET['jobID'])) {
$jobID = $_GET['jobID'];
$customerName = $_GET['customerName'];
$result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");
while($row = mysqli_fetch_array($result)) {
$exist = $row['jobID'];
if (isset($exist)) {
echo "OLD";
} else {
echo "NEW";
}
}
}
有人能指出为什么会这样吗?我还在SQL表中测试了PHP,看看当我输入一个新数字时,它会返回什么结果,但即使将if函数更改为空测试也不会得到结果。
我试着测试了这一行是否存在,但当条件满足和不满足时,它仍然不会返回两个相反的结果。
整个if(isset)
都在while
循环中!
试试这个:如果
(isset($_GET['customerName']) && isset($_GET['jobID'])) {
$jobID = $_GET['jobID'];
$customerName = $_GET['customerName'];
$result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");
while($row = mysqli_fetch_array($result)) {
$exist = $row['jobID'];
}
if (isset($exist)) {
echo "OLD";
} else {
echo "NEW";
}
}
if (isset($_GET['customerName']) && isset($_GET['jobID'])) {
$jobID = mysqli_real_escape_string($_GET['jobID']);
$customerName = $_GET['customerName'];
$result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");
if (mysqli_num_rows($result) > 0) {
echo 'OLD';
$row = mysqli_fetch_array($result);
} else {
echo 'NEW';
}
}
您没有看到任何带有新jobID的内容的原因是,对于新jobID,变量$result为空,因此while循环根本不会运行,因为不满足条件。以下是一种更简单的方法。
if (isset(($_GET['customerName']) && ($_GET['jobID'])))
{
$jobID = $_GET['jobID'];
$customerName = $_GET['customerName'];
$result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID='$jobID'");
$counter = mysqli_num_rows($result);
//$counter counts number of rows if any
if($counter > 0)
{
echo "OLD";
}
else
{
echo "NEW";
}
}