2016-04-26 3 views
0

私はMySQLのステートメントから行の数を取得しようとしていると、if - else文を作成しています。しかし、私は私の時を試しましたが、それは動作していないようです。誰かが私に間違っていることを教えてもらえますか?またはこれを行うためのよりよい方法があります。PHPのSQLサーバは行の数を取得

PHP:

$sqlquery_str = "SELECT * FROM Promotions WHERE membershipType = :membershipType AND promoStatus = '1' AND CONVERT(datetime, startDate, 103) <= convert(varchar(8), GETDATE(), 112) AND CONVERT(datetime, endDate, 103) >= convert(varchar(8), GETDATE(), 112) AND startTime <= CONVERT(char(5), GETDATE(),108) AND endTime >= CONVERT(char(5), GETDATE(),108)"; 

    $number_of_rows = mysql_fetch_array($sqlquery_str); 
    $total = $number_of_rows[0]; 

場合はelse文:

if (!$results){ 
     logError('SQL Query failed',print_r($conns->errorInfo(),true)); 
     echo ' 
     <b>There was an error retrieving the information for the selected event. Please contact the administrator for further advice.</b>'; 
     } 

    else if ($total == 1){ 
     echo "There is an error"; 
     echo "<br />"; 
     } 

    else { 
     $DOMstr = "<h1 class='post-title'>".$results['titlePromo']."</h1>"; 
     } 
+0

その他の場合はどうなりますか?あなたは何を達成しようとしていますか? – Ofir

+1

mysql_num_rowsの 'mysql_fetch_array'をスワップします。 – Farkie

+0

@Ofir私はちょうどコメントだと思う。 – Farkie

答えて

0

使用mysql_num_rows()

<?php 
    $sqlquery_str = "SELECT * FROM Promotions WHERE membershipType = :membershipType AND promoStatus = '1' AND CONVERT(datetime, startDate, 103) <= convert(varchar(8), GETDATE(), 112) AND CONVERT(datetime, endDate, 103) >= convert(varchar(8), GETDATE(), 112) AND startTime <= CONVERT(char(5), GETDATE(),108) AND endTime >= CONVERT(char(5), GETDATE(),108)"; 

    $number_of_rows = mysql_num_rows($sqlquery_str); 

    if ($number_of_rows > 0) 
    { 
     $results = mysql_fetch_array($sqlquery_str); 
     $DOMstr = "<h1 class='post-title'>".$results['titlePromo']."</h1>"; 
    } 
    else 
    { 
     echo "There is an error"; 
     echo "<br />"; 
    } 
?> 
0

EDIT:あなたの言ったことに変更されました。

$sqlquery_str = "SELECT * FROM Promotions WHERE membershipType = :membershipType AND promoStatus = '1' AND CONVERT(datetime, startDate, 103) <= convert(varchar(8), GETDATE(), 112) AND CONVERT(datetime, endDate, 103) >= convert(varchar(8), GETDATE(), 112) AND startTime <= CONVERT(char(5), GETDATE(),108) AND endTime >= CONVERT(char(5), GETDATE(),108)"; 

$query = mysql_query($sqlquery_str) or die('SQL Query failed'); 
$number-of-rows = mysql_num_rows($query); 

if ($number-of-rows == 0) 
{ 
    // picture... 
    echo "<img src='x' />"; 
} 
else 
{ 
    if($number-of-rows == 1) 
    { 
     $results = mysql_fetch_array($query); 
     $DOMstr = "<h1 class='post-title'>".$results['titlePromo']."</h1>"; 
    } 
    else 
     echo "ERROR"; 
} 
+0

私はSQLから取得する列の番号を使用してPHPでelseをやろうとしています。行数が0の場合、デフォルトのピクチャが表示されますが、カラム数が1より大きい場合は、エラーメッセージがエコーされます。それ以外の場合は、取得したデータを表示します。申し訳ありませんがあなたのために混乱して聞こえる – lel

0

私はfetchAll()を代わりに使用しているはずです。 ありがとうございました!

関連する問題