2012-07-16 75 views
3

我遇到了一个令人沮丧的问题,该脚本允许我编辑MySQL数据库中的单个行。通过PHP编辑MySQL数据

这是显示数据库中所有行的文件;它就像它应该的那样工作。

<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>"; 

?> 

正如你可以看到,每行有一个应该允许用户编辑个别学生的数据的“编辑”链接。那么,这里是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> 

当我执行这一点,但是,我得到了以下错误消息:

警告:mysql_fetch_array():提供的参数不是一个有效的MySQL结果资源在/home4/lukaspl1/public_html/StudentEdit.php on line 12

任何想法有什么问题,以及如何解决它?

预先感谢您!

+2

你忘了'选择db'你在执行'StudentEdit.php'查询之前 – ryuusenshi 2012-07-16 06:55:09

回答

2

StudentEdit。PHP:你忘了打电话给@mysql_select_db($database) or die("Unable to select database");你执行的查询

2

从这里

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(); 

取出mysql_close代码应该的mysql_connect(本地主机,$的用户名,密码$);

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

此外,你将只使用基于键的结果集..只需要mysql_fetch_assoc。 而另一个建议将取代$ row [id] ..将其替换为$ row ['id']。

0

我建议在studentEdit.php这样

$student_id = mysql_real_escape_string($_GET[id]); 
$query = "SELECT * FROM students WHERE id = '$student_id'"; 
$result = mysql_query($query) or die(mysql_error() . ' ' . $query); 
$row = mysql_fetch_array($result); 
mysql_close(); 

两件事情我已经改变了这里首先要逃逸URL传递的数据,其次我已经添加了or die(mysql_error() . ' ' . $query);如果事情是会错你现在应该看到错误,并希望你能够从那里修复它的SQL语句。

0

看起来不正确对我来说,你是显示从数据库中检索价值的方式:

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

应该

<input type="hidden" name="id" value="<?php echo $row['id']; ?>"> 
0

尝试...

echo ("<td><a href=\"StudentEdit.php?id=".$row['id']."\">Edit</a></td></tr>"); 

而不是

echo ("<td><a href=\"StudentEdit.php?id=$row[id]\">Edit</a></td></tr>"); 
0

此代码缺少

$select_db = mysql_select_db("$db_name"); 
if (!$select_db) {echo "Error Selecting Database";} 
1

的这部分代码之前是错误的:

$student_id = $_GET[id]; 

正确的代码是

$student_id = $_GET['id']; 

code from www.ransilu.info

0

这是编辑的鳕鱼的细节动态

<?php 

    include('db.php'); 

     $id=$_REQUEST['id']; 
     $query="SELECT * FROM `camera details` WHERE id='".$id."'"; 
     $result=mysqli_query($db,$query) or die(mysqli_error()); 
     $row1=mysqli_fetch_assoc($result); 


    if(isset($_POST['submit'])&&(isset($_POST['new'])&&($_POST['new'])==1)) 
    { 
      $id=$_REQUEST['id']; 

     foreach($_POST as $key=>$values) 
     { 
      if($key!="submit"){ 

      $names[]=$key; 
      $val[]= "'".$values."'"; 

      if($key!="new"){ 
      $k[] = "`".$key."` = '".$values."'"; 
      } 
      } 
     } 
     $output=implode(",",(array)($k)); 
     //$v=implode(",",(array)($val)); 

     // `name` = 'san' 

     $query="UPDATE `camera details` SET $output WHERE id='".$id."'"; 

     $output=mysqli_query($db,$query) or die(mysqli_error($db)); 
     if($output) 
     { 
      header('location:cameralist.php'); 
     } 
    } 
    else{ 
     ?>