2009-04-20 7 views
3

Я извлекаю 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

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

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

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

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

1

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

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

if(isset($row['field'])) { } 
+0

оба этих метода не имеет никакого значения. Айя. – 2009-04-20 13:50:39

3

Первый и ваш главный вопрос:

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

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

  • Почему вы установить соединение дважды? Или фактически несколько раз? Найдите способ, чтобы ваши функции знали о соединении!
  • Фактор подключения в комплекте.
  • Почему вы выполняете этот цикл while, если вы можете напрямую обращаться к возвращенному массиву?
0

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

is_null($row['field']) 

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

if(is_null($rows['field'])){ 
    // Code Here 
}else{ 
    //code here 
} 
Смежные вопросы