When I execute my php code, I get an error saying \": mysql_fetch_array() expect
ID: 3835800 • Letter: W
Question
When I execute my php code, I get an error saying ": mysql_fetch_array() expects parameter 1 to be resource "
It says that my error occurs at "$good1 = mysql_fetch_array($sql1)". But I can't figure it out. Related code is written below.
$bookTitle = $_POST['title'];
$sql = mysql_query("SELECT * FROM Books_T WHERE Title = '$bookTitle'") or die("Query failed".mysql_error());
$sql1 = mysql_query("UPDATE Books_T SET Quantity = Quantity - 1 WHERE Title = '$bookTitle' AND Quantity > 0") or die("Query failed".mysql_error());
$good = mysql_fetch_array($sql);
$good1 = mysql_fetch_array($sql1);
if($good['Title'] == $bookTitle){
echo "Book successfuly checked out";
}
else
{
echo "Book not available";
header("refresh:80; url=login_homepage.html");
}
?>
Explanation / Answer
Hi,
You are providing wrong arguments for the function mysql_fetch_array.
I have explained the fuction definition . Also three examples, hope after reading this you can modify your code accordingly.
Description
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )
Parameters
result
The result resource that is being evaluated. This result comes from a call to mysql_query().
result_type
The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC,MYSQL_NUM, and MYSQL_BOTH.
Return Values
Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows. The type of returned array depends on how result_type is defined. By using MYSQL_BOTH (default), you'll get an array with both associative and number indices. Using MYSQL_ASSOC, you only get associative indices (as mysql_fetch_assoc()works), using MYSQL_NUM, you only get number indices (as mysql_fetch_row() works).
If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use the numeric index of the column or make an alias for the column. For aliased columns, you cannot access the contents with the original column name.
Example 1: mysql_fetch_array() with MYSQL_NUM
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
mysql_free_result($result);
?>
Example 2: mysql_fetch_array() with MYSQL_ASSOC
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID: %s Name: %s", $row["id"], $row["name"]);
}
mysql_free_result($result);
?>
Example 3: mysql_fetch_array() with MYSQL_BOTH
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s Name: %s", $row[0], $row["name"]);
}
mysql_free_result($result);
?>
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.