Проверить нулевое значение из базы данных - не удалось - PullRequest
3 голосов
/ 20 апреля 2009

Я извлекаю 3 поля из базы данных, и по умолчанию только поле имени пользователя будет иметь содержимое. Другая информация будет добавлена ​​из пользовательского приложения. Я хочу показать поле как «Нет информации», если в поле нет записи. Я пытаюсь использовать и empty () и is_null () безрезультатно. Var_dump из $ row ['firstname'] и $ row ['lastname'] возвращает NULL в обоих случаях.

<?php
  if (isset($_GET["subcat"]))
  $subcat = $_GET["subcat"];
if (isset($_GET["searchstring"])) {
    $searchstring = $_GET["searchstring"];
}
$con = mysqli_connect("localhost","user","password", "database");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error();
    exit;
}
$table = 'USERS';
$brand = '%' . $searchstring . '%';
$rows = getRowsByArticleSearch($brand, $table);
echo "<table border='0' width='100%'><tr>" . "\n";
echo "<td width='15%'>Username</td>" . "\n";
echo "<td width='15%'>Firstname</td>" . "\n";
echo "<td width='15%'>Surname</td>" . "\n";
echo "</tr>\n";
foreach ($rows as $row) {
    if (is_null($row['firstname']) || $row['firstname'] == "") {
        $row['firstname'] == "No Info";
    }
    if ($row['lastname'] == null || $row['lastname'] == "") {
        $row['firstname'] == "No Info";
    }
    var_dump($row['firstname']);
    var_dump($row['lastname']);
    echo '<tr>' . "\n";
    echo '<td><a href="#" onclick="updateByUser(\''. $row['username'] .'\',\''.$subcat.'\')">'.$row['username'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByUser(\''. $row['username'] .'\', \''.$subcat.'\')">'.$row['firstname'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByUser(\''. $row['username'] .'\', \''.$subcat.'\')">'.$row['lastname'].'</a></td>' . "\n";
    echo '</tr>' . "\n";
}
echo "</table>\n";
function getRowsByArticleSearch($searchString, $table) {
    $con = mysqli_connect("localhost","user","password", "database");
    $recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lower(username) LIKE ? ";
    if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($username, $firstname, $lastname);
        $rows = array();
        while ($getRecords->fetch()) {
            $row = array(
                            'username' => $username,
                            'firstname' => $firstname,
                            'lastname' => $lastname,
                        );
            $rows[] = $row;
        }
        return $rows;
    } else {
        print_r($con->error);
    }
}

Ответы [ 4 ]

4 голосов
/ 20 апреля 2009

Включите display_errors и установите error_reporting на E_ALL (либо в php.ini, либо в htaccess). Это должно выявить любые неочевидные ошибки.

Попробуйте следующее для проверки, если что-то пусто:

<?php
if(!isset($row['...']) || empty($row['...']))
{
    $row['firstname'] = 'No Info';
}
?>

Также, обратите внимание, что вы используете '==', чтобы установить $ row 'No Info' . Все, что это делает, это возвращает 'true' (или 1). Используйте один '=' для установки переменных.

3 голосов
/ 20 апреля 2009

Первая и ваша главная проблема:

Вы используете операторы сравнения в $ row ['firstname'] == "No Info"; вместо операторов присваивания $ row ['firstname'] ="Нет информации";

Другие вопросы:

  • Почему вы устанавливаете соединение дважды? Или на самом деле несколько раз? Найдите способ сообщить своим функциям соединение!
  • Разложите соединение во включенное.
  • Почему вы делаете это в то время как цикл, если вы можете получить доступ к возвращенному массиву напрямую?
1 голос
/ 20 апреля 2009

Две вещи, чтобы попробовать ...

if($row['field'] === NULL) { }

if(isset($row['field'])) { }
0 голосов
/ 14 декабря 2017

Вы можете проверить пустые данные, используя is_null свойство. Ссылка на эту ссылку для более подробной информации http://php.net/manual/en/function.is-null.php

is_null($row['field'])

Использование

if(is_null($rows['field'])){
   // Code Here
}else{
  //code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...