Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Editing data from MySQL via PHP

Tags:

php

mysql

I am running into a frustrating problem with a PHP script that's supposed to allow me to edit individual rows within my MySQL database.

This is the file where all of the rows from the database are displayed; it works just like it's supposed to.

<table cellpadding="10">
<tr>
<td>ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>E-mail</td>
<td>Phone</td>
</tr>

<?php

$username="username here";
$password="password here";
$database="database name here";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);
mysql_close();

while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[id]</td>");
echo ("<td>$row[first]</td>");
echo ("<td>$row[last]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[phone]</td>");
echo ("<td><a href=\"StudentEdit.php?id=$row[id]\">Edit</a></td></tr>");
}
echo "</table>";

?>

As you can see, each row has an "Edit" link that is supposed to allow the user to edit that individual student's data. Here, then, is StudentEdit.php:

<?php

$username="username";
$password="password";
$database="database";

mysql_connect(localhost,$username,$password);

$student_id = $_GET[id]; 
$query = "SELECT * FROM students WHERE id = '$student_id'"; 
$result = mysql_query($query);
$row = mysql_fetch_array($result);
mysql_close();
?>

<form method="post" action="EditStudentData.php" />

<table>

<tr>
<td><input type="hidden" name="id" value="<? echo "$row[id]" ?>"></td>
</tr>

<tr>
<td>First Name:</td>
<td><input type="text" name="first" value="<? echo "$row[first]" ?>"></td>
</tr>

<tr>
<td>Last Name:</td>
<td><input type="text" name="last" value="<? echo "$row[last]" ?>"></td>
</tr>

<tr>
<td>Phone Number:</td>
<td><input type="text" name="phone" value="<? echo "$row[phone]" ?>"></td>
</tr>

<tr>
<td>E-mail:</td>
<td><input type="text" name="email" value="<?echo "$row[email]" ?>"></td>
</tr>

</table>

</form>

When I execute this, however, I get the following error message:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home4/lukaspl1/public_html/StudentEdit.php on line 12

Any ideas what's wrong, and how to fix it?

Thank you in advance!

like image 408
Lukas Pleva Avatar asked Dec 27 '22 21:12

Lukas Pleva


2 Answers

Remove the mysql_close from here

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);
mysql_close();

The code should mysql_connect(localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);

And moreover,you are going to use only key based resultset.. simply have mysql_fetch_assoc. And another suggestion would be instead of $row[id]..replace it with $row['id'].

like image 84
satdev86 Avatar answered Jan 08 '23 18:01

satdev86


StudentEdit.php: you forgot to call @mysql_select_db($database) or die( "Unable to select database"); before you executed the query

like image 35
ryuusenshi Avatar answered Jan 08 '23 19:01

ryuusenshi