views:

61

answers:

4

Hi, I'm a real beginner with PHP & mysql. Just for studying and for a simple example at school I would like to work this simple query and possibly output all the rows (or maybe even one) to a very basic output on a php page:

<?php
$user= "root";
$host="localhost";
$password="";
$database = "PetCatalog";
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("couldn’t connect to server");
$query = "SELECT * FROM Pet";
$result = mysql_query($cxn,$query) or die ("Couldn’t execute query.");
$row = mysqli_fetch_assoc($result);
echo "$result";
?>

this is the error message i've been getting:

Warning: mysql_query() expects parameter 1 to be string, object given in C:\xampplite\htdocs\myblog\query.php on line 18
Couldn’t execute query.

What should I do? Thanks!

+2  A: 
mysql_query($query,$cxn) 

in place of

mysql_query($cxn,$query) 
Silvio Donnini
The OP is using the Mysql improved library, the problem is the wrong function, not the parameter order.
Alan Storm
+2  A: 

You may want to also consider using the Object Oriented interface:

# create a new connection object
$DBH = new mysqli($host, $user, $pass, $dbname);

# execute your query 
$result =$DBH->query('SELECT * FROM Pet');

# iterate over the results
while($row = $result->fetch_assoc()) {
       print_r($row);
}
Erik
+1  A: 

PHP has been around for a long time. Every few years, someone comes up with a new, preferred way of connecting to databases. In the early days, to connect to and query a MySQL database you used the MySQL database. Later on, a new MySQL library was created, Mysqli (the i stands for improved).

You're making your connection with the mysqli_connect function, a Mysqli function. However, you're then trying to use a function form the original library, mysql_query (notice there's no i). You want mysqli_query.

If you look at that page, you'll see this, listing the procedural style

mixed mysqli_query  (  mysqli $link  ,  string $query  [,  int $resultmode  ] )

This line is telling you that the function wants the database link first, and the query second. So, you have your parameters in the right order above, you're just using the wrong function.

Alan Storm
+2  A: 
<?php
$user= "root";
$host="localhost";
$password="";
$database = "PetCatalog";
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("couldn’t connect to server");
$query = "SELECT * FROM Pet";
$result = mysql_query($query) or die ("Couldn’t execute query.");
while($row = mysqli_fetch_array($result)) {
          print_r($row);
}
?>

This should solve your problem

Starx