2012-07-16 76 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{ 
     ?>