0

I am trying to get the number of rows from MySQL statement and create an if-else statement. However, I tried my times but it doesn't seem to be working. Can anybody tell me what am I doing wrong? or is there any better way to do this.

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];

If else statement:

    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>";
        } 
Farkie
  • 3,307
  • 2
  • 22
  • 33
lel
  • 327
  • 7
  • 26

3 Answers3

0

Use 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 />";
    } 
?>
RJParikh
  • 4,096
  • 1
  • 19
  • 36
0

EDIT: Changed to what you told me.

$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";
} 
Ofir
  • 141
  • 14
  • i am trying to do a if else in php using the number of column i retrieve from sql. if the number of rows is equal to 0, a default picture will show but if the number of column is more than 1, error message is being echoed. else just show out the retrieved data. Sorry that it sounds confusing for you – lel Apr 26 '16 at 08:44
0

i figure out that i should be using fetchAll() instead. Thank for all the help!

lel
  • 327
  • 7
  • 26