получить результат из PHP SQL, но мое «сообщение о результате» не отображается

0

У меня есть таблица SQL следующим образом:

prim auto inc | hdate | nvs | vsa | batch1number | batch2number |

Я делаю запрос sql, целью которого является сравнение ввода пользователей в столбец interst 1 и интересующего столбца 2. Если в любом из столбцов есть значение, я получаю результаты в раскрывающемся списке выбора. - Эта часть работает.

<?php
include 'config.php';

$userinputone=$_POST['abc']; 

$userinputone = mysqli_real_escape_string($con,$userinputone);
$sql = "SELECT * FROM handover WHERE batch1number  = '".$userinputone."' OR        

batch2number = '".$userinputone."' ";
$result = mysqli_query($con,$sql);



while($row = mysqli_fetch_array($result)) {

$count=mysqli_num_rows($result);
if($count==0 ){

echo "</br></br></br></br></br><p> No Matching results found</p>";
}

else{     
echo "<select>";
echo "<option>" . $row['batch1number'] . $row['batch2number'] . "</option>";
echo "</select>";
}
}

mysqli_close($con);

Однако, когда я печатаю (или не печатаю!) В пустой записи, мое сообщение "нет соответствующих результатов" не выводится. Вместо этого я получаю все свои результаты, включая пустые в выпадающих меню. Также, когда я ввожу значение, которое не соответствует, я просто получаю пустую страницу и сообщение. Я просмотрел синтаксис empty(), предложенный по связанному вопросу, и попытался применить некоторые из моих переменных. Im довольно уверен, что это связано с частью $ count == 0 и попробовал добавить дополнительные операторы, такие как || batch1number = '' && batch1number = '' - запрос работал, но я до сих пор не получил сообщение об ошибке.

Если кто-то может мне помочь, и если время позволит объяснить, почему я получаю эти результаты, я был бы очень благодарен.

Теги:

1 ответ

1
Лучший ответ

У вас есть логическая ошибка в коде. Вы никогда не while($row = mysqli_fetch_array($result)) в цикл, потому что while($row = mysqli_fetch_array($result)) возвращает false с самого начала. Что вам нужно:

<?php
include 'config.php';

$userinputone=$_POST['abc']; 

$userinputone = mysqli_real_escape_string($con,$userinputone);
$sql = "SELECT * FROM handover WHERE batch1number  = '".$userinputone."' OR        

batch2number = '".$userinputone."' ";
$result = mysqli_query($con,$sql);

$count=mysqli_num_rows($result);

if($count==0 ){
    echo "</br></br></br></br></br><p> No Matching results found</p>";
}

else{
    while($row = mysqli_fetch_array($result)) {
        echo "<select>";
        echo "<option>" . $row['batch1number'] . $row['batch2number'] . "</option>";
        echo "</select>";
    }
}

mysqli_close($con);

Обновите thanx до Ohgodwhy

Вы также можете пойти с улучшением $userinputone:

if (isset($_POST['abc'])) {
    $userinputone = $_POST['abc'];
}
else {
    $userinputone = false;
}

или просто

$userinputone = isset($_POST['abc'])? $_POST['abc'] : false;

и затем обертывание всего $userinputone запроса в проверку, действительно ли $userinputone действительно установлен:

if(isset($userinputone)) {
    ...
}
  • 1
    Я бы также предложил $userinputone = isset($_POST['abc'])? $_POST['abc'] : false; и, конечно, if(isset($userinputone)){ по крайней мере. +1 в любом случае.
  • 0
    Приветствия @Nordenheim & ohgodwhy. Это разобрало мою проблему. Норденхайм исправил проблему, сообщив об ошибке. Но добавление $ userinputone = isset ($ _ POST ['abc']) исправило пустой запрос, так как я все еще получал пустые выборки. Еще раз большое спасибо
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню