2014-05-27 6 views
0

Я пытаюсь реализовать сценарий обновления на своей странице, но он не работает. У меня есть 2 страницы, те «update.php» страницы и страница «update_ac.php», который запускает сценарий после удара «Отправить» на форме, код, как показано ниже:PHP UPDATE скрипт не работает

update.php

на этой странице у меня есть эта ошибка: Warning: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический приведены в C: \ XAMPP \ HTDOCS \ update.php на линии 16

<?php 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="764503"; // Database name 

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// get value of id that sent from address bar 
$id=$_GET['id']; 

// Retrieve data from database 
$result=mysql_query("SELECT * FROM produse WHERE id='$id'"); 
$rows=mysql_fetch_array($result); 
?> 

<table width="400" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<form name="form1" method="post" action="update_ac.php"> 
<td> 
<table width="100%" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<td>&nbsp;</td> 
<td colspan="3"><strong>Update data in mysql</strong> </td> 
</tr> 
<tr> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
</tr> 
<tr> 
<td align="center">&nbsp;</td> 
<td align="center"><strong>titlu</strong></td> 
<td align="center"><strong>stare</strong></td> 
<td align="center"><strong>pret</strong></td> 
<td align="center"><strong>descriere</strong></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td align="center"> 
<input name="titlu" type="text" id="titlu" value="<? echo $rows['titlu']; ?>"> 
</td> 
<td align="center"> 
<input name="stare" type="text" id="stare" value="<? echo $rows['stare']; ?>" size="15"> 
</td> 
<td> 
<input name="pret" type="text" id="pret" value="<? echo $rows['pret']; ?>" size="15"> 
</td> 
<td> 
<input name="descriere" type="text" id="descriere" value="<? echo $rows['descriere']; ?>" size="15"> 
</td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td> 
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"> 
</td> 
<td align="center"> 
<input type="submit" name="Submit" value="Submit"> 
</td> 
<td>&nbsp;</td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 

<?php 
// close connection 
mysql_close(); 
?> 

update_ac.php

<?php 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="764503"; // Database name 

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// update data in mysql database 
$sql="UPDATE produse SET titlu='$_POST[titlu]' ,stare='$_POST[stare]' ,pret='$_POST[pret]' ,descriere='$_POST[descriere]' WHERE id='$_POST[id]'"; 
$result=mysql_query($sql); 

// if successfully updated. 
if($result) 
{ 
echo "Successful"; 
} 

else 
{ 
echo "ERROR"; 
} 

?> 
+0

отсутствует запятая 'прет = '$ _ POST [пру] описание В =' $ _ POST [описание В]' – potashin

+5

обязательная MySQL устарела и ваш код wiiiiddddeee открыт для SQL injection – mituw16

+0

Если вы не можете получить строки, проверьте, что содержит идентификатор $ id. – turson

ответ

0

Возможно, это означает, что у вас есть ошибка в запросе. Если у вас есть ошибка в вашем запросе, она не создает ресурс для получения ваших данных.

, чтобы найти ошибку: добавить или умереть (mysql_error()) в команду mysql_query. поэтому вы можете узнать об ошибке.

+1

Пожалуйста, не оставляйте комментарии в качестве ответов. –

1

mysql_query возвращение FALSE при возникновении ошибки вместо возвращения массива, этот тест избежать второй (и больше) ошибки: если FALSE нет проблем, если массив не может принести его, ОЦ

if ($result) $rows=mysql_fetch_array($result); 
+1

Пожалуйста, расширьте этот ответ. Один фрагмент ничего не объясняет. – Xan

+0

Извините, mysql_query возвращает FALSE, когда возникает ошибка (вместо массива), поэтому, чтобы избежать такого поведения, мы могли бы проверить $ rows, прежде чем пытаться прочитать его как массив: если он FALSE в порядке, если это массив, тест ответит TRUE – robin

+0

Отредактируйте сообщение, чтобы включить эту информацию, пожалуйста. – Xan

0

У вас есть ошибка в вашем sql-запросе update в файле update_ac.php. Поэтому ничто, вероятно, не обновляется. При использовании индексов массива неправильно в следующем заявлении:

$sql="UPDATE produse SET titlu='$_POST[titlu]' ,stare='$_POST[stare]' ,pret='$_POST[pret]' ,descriere='$_POST[descriere]' WHERE id='$_POST[id]'"; 

$_POST[titlu] должен быть $_POST['titlu'], $_POST[stare] должны быть $_POST'stare'] и так далее. Таким образом, правильный запрос может быть, как показано ниже:

$sql="UPDATE produse SET titlu='".$_POST['titlu']."' ,stare='".$_POST['stare']."' ,pret='".$_POST['pret']."' ,descriere='".$_POST['descriere']."' WHERE id='".$_POST['id']."'"; 
Смежные вопросы