2017-03-25 9 views
-1

特定の値が含まれている場合ので、基本的に、私は単純なWebアプリ初心者のPHPのmysql - リターン・ブール行は、[OK]を

を作成しようとしている私は1つの要素がテーブル内にあるかどうかを確認したい、と私は返すようにしたい内部の場合たとえば "abc"が "name"という名前のテーブルの中にある場合のようにブール値を返し、次にYESを返します。ここで

が機能していない、私のコードです:

error_reporting(E_ALL); 

$mysql = mysqli_connect(/* PRIVATE DATA */) or die ("ERROR CONNECTING TO THE DB"); 

if(isset($_POST['submit'])) { 

    $theAddress = $_POST['youtubeURL']; 

    $result = "SELECT * FROM data WHERE youtubeURL = '" . $theAddress . "'"; 

    $query = mysqli_query($mysql, $result); 

    if (!$query) { 
     printf("Error"); 
    } else { 
     printf("NO ERROR"); 
    } 

、ここでは、NON-WORKING一部です:

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

     if ($row == 0) { 

      echo "NO RESULT LIKE THIS"; 

     }else { 

      echo "AT LEAST ONE RESULT LIKE THIS"; 
     } 
    } 

} 
+0

これはエラーです。 $ mysqli_resultの代わりに$ rowでなければなりません –

+0

if(!$ row){... – Mihai

答えて

0

あなたが行をカウントするmysqli_num_rowsを使用する必要があります。..

$result = "SELECT * FROM data WHERE youtubeURL = '" . $theAddress . "'"; 

$query = mysqli_query($mysql, $result); 

if(mysqli_num_rows($query)) { 
    echo "AT LEAST ONE RESULT LIKE THIS"; 
} else { 
    echo "NO RESULT LIKE THIS"; 
} 
0

それはこのようにすべきです。

//in case you want to see total of the wors 
if(mysqli_num_rows($query) == 0) { 
    echo "NO RESULT LIKE THIS"; 
} else { 
    echo "AT LEAST ONE RESULT LIKE THIS"; 
} 

//in case you want to check for each of the row 
while($row = mysqli_fetch_array($query)) { 
     if (empty($row)) { 
      echo "NO RESULT LIKE THIS"; 
     } else { 
      echo "AT LEAST ONE RESULT LIKE THIS"; 
     } 
} 
1

まず、パラメータクエリを使用する方法を学んでください。実際には、クエリに文字列値を詰め込むよりも使用するのが難しくありません。

第2に、何かが存在するかどうかを知りたい場合は、それを行うためだけにクエリを記述します。最も簡単なクエリはおそらく次のとおりです。

SELECT EXISTS (SELECT 1 FROM data WHERE youtubeURL = ?) as exists_flag 

これは、一致するものが1つある場合は1を返します。クエリを実行し、返される単一の値を読み取るだけです。

存在を確認するためにselect *を返すことはアンチパターンです。データベースより多くのデータを必要以上に返すことになります(行と列の両方)。それは通常良い考えではありません。