我有一个名为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函数更改为空测试也没有得到结果来吧。
我已经尝试过对该行是否存在进行测试,并且在条件满足且未满足时仍然没有返回两个相反的结果。
答案 0 :(得分:0)
整个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";
}
}
答案 1 :(得分:0)
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';
}
}
答案 2 :(得分:0)
您没有看到任何新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";
}
}