Dan Shirah wrote:
Okay, I know this is probably a real easy fix, and I could swear I've done
it before, but for some reason it's just not working.

Below is my query, it does a conditional search based on info put in a form
by the user. If I put in a valid letter/name for the last_name that I know
is in my database everything works fine.

BUT, if I put in a character/name for the last_name that does not exist in
my database I get the following error: Call to undefined function
mssql_error() when I should be getting the echo, "No results"

The snipet of my code that is throwing the error is:
if (!empty($tot_result)) {
$total_results = mssql_num_rows($tot_result) or die(mssql_error());
}

Should I not use (!empty()) when checking to see if a query did not return
any results?

MY CODE:
<?php
// Figure out the total number of results in DB:
$sql_total= "SELECT * FROM payment_request WHERE payment_request.status_code
= 'P'";
 if ($customer_last != "") {
 $sql_total.=" AND last_name LIKE '$customer_last%'";
 if ($customer_first != "") {
 $sql_total.=" AND first_name LIKE '$customer_first%'";
   }
  }
$tot_result = mssql_query($sql_total) or die(mssql_error());

Fist off, mssql_error() is not a valid function... You should be using 
mssql_get_last_message() instead.

But, read on first...

You have a couple choices here.
if ( $tot_result ) {

or

if ( is_resource($tot_result) ) {

or (my favorite)

<?php

#####
# Remember to clean $customer_last & $customer_first before you
# place them in your SQL statement.  Unfortunately, mssql_* doesn't have
# a function for cleaning your values before you us them.  You will need
# to create your own method of input validation here.
#
# Also, I'm assuming that since you didn't show your mssql_connect() call,
# that you are only showing us part of your script...
#####

// Figure out the total number of results in DB:
$sql_total= "SELECT * FROM payment_request WHERE payment_request.status_code = 
'P'";
if ($customer_last != "") {

        $sql_total .= " AND last_name LIKE '{$customer_last}%'";

}
if ($customer_first != "") {

        $sql_total .= " AND first_name LIKE '{$customer_first}%'";

}

if ( ( $tot_result = mssql_query($sql_total) ) === false ) {

        echo 'MSSQL ERROR: '.mssql_get_last_message();

} else {

        $total_results = mssql_num_rows($tot_result);

        if ( $total_results == 0 ) {

                echo 'No results found.';

        } else {

                // Figure out the total number of pages. Always round up using 
ceil()
                $total_pages = ceil($total_results / $max_results);
                echo "Results per page: {$max_results}<br />\n";
                echo "Total results: {$total_results}<br />\n";
                echo "Total number of pages needed: {$total_pages}<br />\n";

        }
}

?>

This should work for you...


if (empty($tot_result)) {
 echo "No results";
 }
if (!empty($tot_result)) {
$total_results = mssql_num_rows($tot_result) or die(mssql_error());
}
// Figure out the total number of pages. Always round up using ceil()
$total_pages = ceil($total_results / $max_results);
//echo "Results per page: ".$max_results."\n <br />";
//echo "Total results: ".$total_results."\n <br />";
//echo "Total number of pages needed: ".$total_pages."\n <br />";
?>



--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to