azs06
azs06

Reputation: 3517

Php Custom Function For Mysql Query Not Working

I have created two functions one for connecting to MySQL database and one for running a specific query. I enter the database name as parameter for first function to connect to the database, this works fine, but my problem is with the second one. 2nd function returns the $result from running a query, but when I use mysql_fetch_array with the $result, it gives one output even if it supposed to give more than one. As I am no php expert so i can't find the solution. Please help me.

Here is the code:

File Function.php

<?php
function myconnect($data)
{
  $db_host='localhost';
  $db_user='root';
  $db_pwd='';
  $data=$data;
  $dbc = mysqli_connect($db_host, $db_user,$db_pwd,$data) or die (mysql_error());
  return $dbc;
}

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
  $dbc=myconnect($db);
  $query="SELECT *FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC";
  $result = mysqli_query($dbc, $query);
  return $result;
}
?>

File test.php

<?php
  require_once('testfunc.php');
  $result= runquery('user','user_basic','user_type','1');
  //runquery('database','table','col','id')/
  while($row=mysqli_fetch_array($result))
  { 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
  }
?>

If I am doing all wrong then suggest me a better way :-)

Upvotes: 0

Views: 1334

Answers (2)

CBusBus
CBusBus

Reputation: 2359

function myconnect($db)
{
    /*Removed redundant - single use variables*/

    /*DB name was passed to the client_flags parameter of mysql_connect instead of mysql_select_db*/
    $dbc = mysql_connect("localhost", "root","") or die (mysql_error());
    /*Inserted Line*/
    mysql_select_db($data);
    return $dbc;
}

Currently you're not selecting a database - equivalent of USE DATABASE db_name.

Couple of syntax changes and function definition

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
    $dbc=myconnect($db);
    /*Query and link identifier were in the wrong order*/
    return mysql_query("SELECT * FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC", $doc);
}

Finally a couple of syntax changes, function calls

require_once('testfunc.php');
$result= runquery('user','user_basic','user_type','1');
/*fetch associateive array of result during iteration*/
while($row=mysql_fetch_assoc($result))
{ 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
}

Upvotes: 0

Jeremy
Jeremy

Reputation: 1972

A quick glance shows that in your function runquery

SELECT *FROM

should be

SELECT * FROM

note the space after the *

EDIT : I also notice you are using *mysqli_fetch_array* and this is not a valid mysqli method. You are right in using the mysqli extension over mysql but you should look more into statement fetch to solve this issue. The link I provided give a procedural example that should work for what you need.

Upvotes: 2

Related Questions