Jump to content


[PHP] Querying DB in functions.php

php mysql

  • Please log in to reply
2 replies to this topic

#1 generalt



  • Joined: 09-May 07

Posted 25 February 2013 - 19:04

I am trying to make a query from functions.php, but I get the following error:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in .../functions.php on line 60

Here is functions.php:

function inline($symbol){
        GLOBAL $dbc;
        require_once ('mysqli_connect.php');
        $inline_display = "error";
        $q = "SELECT rating WHERE symbol = '$symbol'";
        $r = mysqli_query($dbc, $q);
        while ($row = mysqli_fetch_array($r)){
            $rating = $row['rating'];
        if($rating == 1)
            $inline_display = "$symbol - <font color=\"#ff0000\"><b>Avoid</b></font>";
        if($rating == 2)
            $inline_display = "$symbol - <font color=\"#990000\"><b>Risky</b></font>";
        if($rating == 3)
            $inline_display = "$symbol - <font color=\"#666666\"><b>Neutral</b></font>";
        if($rating == 4)
            $inline_display = "$symbol - <font color=\"#006600\"><b>Compelling Buy</b></font>";
        if($rating == 5)
            $inline_display = "$symbol - <font color=\"#ff6600\"><b>Top Pick</b></font>";
        return $inline_display;

This is the page that calls the function:

    //require_once ('mysqli_connect.php');
    include ('functions.php');
    $symbol = "XOM";
    echo inline($symbol);



And here is mysqli_connect.php:

// Set the database access information as constants:
DEFINE ('DB_USER', 'user');
DEFINE ('DB_HOST', 'host');
DEFINE ('DB_NAME', 'db');

// Make the connection:
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );

// Set the encoding...
mysqli_set_charset($dbc, 'utf8');

// Use this next option if your system doesn't support mysqli_set_charset().
//mysqli_query($dbc, 'SET NAMES utf8');


I think my problem has something to do with making $dbc a global variable, but I haven't been able to resolve the issue. What am I doing wrong?

#2 Andrew Lyle

Andrew Lyle

    Don't Panic!

  • Joined: 15-December 03
  • Location: Toronto, Ontario
  • OS: Windows 7 SP1

Posted 25 February 2013 - 19:08

you have the database connection commented out.

Edit: i've never used "mysqli_fetch_array" myself, so i don't know the advantages of that compared to 'mysql_fetch_array" and "mysql_query" vs "mysqli_query"

#3 ZakO



  • Tech Issues Solved: 3
  • Joined: 21-September 07
  • Location: Finland

Posted 25 February 2013 - 19:30

Your SQL syntax is incorrect so mysqli_query is returning false instead of a result set:

$q = "SELECT rating WHERE symbol = '$symbol'";

Should be:

$q = "SELECT rating FROM <table_name> WHERE symbol = '$symbol'";

However, using global variables and requiring files inside functions are bad practices. A (slightly) better way would be to pass the database handle as a parameter to the inline function, also, watch out for SQL Injection if symbol is going to be user generated.

i've never used "mysqli_fetch_array" myself, so i don't know the advantages of that compared to 'mysql_fetch_array" and "mysql_query" vs "mysqli_query"

mysql_* functions are deprecated and will be removed in future versions of PHP, no new scripts should use them (use Mysqli or PDO).