2009-04-20 14 views
3

データベースから3つのフィールドを取得していますが、デフォルトでは、ユーザー名フィールドのみに内容があります。その他の情報は、ユーザーアプリケーションから追加されます。フィールドに入力がない場合、フィールドを「情報なし」として表示します。私は無駄に空()とis_null()の両方を使用しようとしています。 $ row ['firstname']と$ row ['lastname']のvar_dumpはどちらの場合も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'; 
} 
?> 

また、は、あなたが「いいえ情報」に$行のものを設定するには「==」使用していますのでご注意ください。 Alはこれが戻り値true(または1)です。変数を設定するには、単一の '='を使用します。

1

二つしようとするもの...

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

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

IS_NULLプロパティ.Referこのリンクを使用して、空のデータを確認することができます。そうです。 –

3

まず、あなたの主な問題:あなたは$行に比較演算子を使用している

[ 'firstnameの'] == "いいえ情報" ;代入演算子の代わりに$ row ['firstname'] = "情報なし";

その他の問題:

  • なぜあなたは二回の接続を確立していますか?実際には何回か?関数に接続を知らせる方法を見つけよう!
  • 接続を組み込みに組み込む要因となります。
  • 返された配列に直接アクセスできるのはなぜですか?
0

あなたはこれらのメソッドの両方が、何の違いを作っていない詳細 http://php.net/manual/en/function.is-null.php

is_null($row['field']) 

のために使用

if(is_null($rows['field'])){ 
    // Code Here 
}else{ 
    //code here 
} 
関連する問題