2013-09-25 32 views
5

Bu konuyla ilgili düzinelerce konuya göz attım ama henüz bir çözüm bulamadım.HTML Formu ve PHP'yi kullanarak MySQL'i Güncelleyin

Ben girdi kutularında veritabanı tablo içeriğini göstermek gerekiyordu bir form oluşturduk

ve giriş kutularına içeriği değişti ve gönderildikleri zaman veritabanı güncelleme gerekiyordu.

<html> 
<head> 
</head> 
<body> 

<?php 

$dbhost = '****'; 
$dbuser = '****'; 
$dbpass = '****'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('****'); 

$query = "SELECT * FROM anstalld"; 
$result = mysql_query($query) or die(mysql_error()); 

?> 


<form method="post" action="<?php $_PHP_SELF ?>"> 
<table width="400" border="0" cellspacing="1" cellpadding="2"> 
<tr> 

<?php 

while($row = mysql_fetch_array($result)) 
      { 

$namn = $row['namn']; 
$mandag = $row['mandag']; 
$tisdag = $row['tisdag']; 
$onsdag = $row['onsdag']; 
$torsdag = $row['torsdag']; 
$fredag = $row['fredag']; 
?> 


<td width="100"></td> 
<td><?=$namn?></td> 
</tr> 
<tr> 
<td width="100">Mandag</td> 
<td><input name="mandagid" type="text" value="<?=$mandag?>"></td> 
</tr> 
<tr> 
<td width="100">Tisdag</td> 
<td><input name="tisdagid" type="text" value="<?=$tisdag?>"></td> 
</tr> 
<tr> 
<td width="100">Onsdag</td> 
<td><input name="onsdagid" type="text" value="<?=$onsdag?>"></td> 
</tr> 
<tr> 
<td width="100">Torsdag</td> 
<td><input name="torsdagid" type="text" value="<?=$torsdag?>"></td> 
</tr> 
<tr> 
<td width="100">Fredag</td> 
<td><input name="fredagid" type="text" value="<?=$fredag?>"></td> 
</tr> 
<?php } ?> 
<tr> 
<td width="100"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> 
<input name="update" type="submit" id="update" value="Update"> 
</td> 
</tr> 
</table> 
</form> 



<?php 

if(isset($_POST['update'])) 
{ 

$namn = $_POST['namnid']; 
$mandag = $_POST['mandagid']; 
$tisdag = $_POST['tisdagid']; 
$onsdag = $_POST['onsdagid']; 
$torsdag = $_POST['torsdagid']; 
$fredag = $_POST['fredagid']; 

$sql = mysql_query("UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'"); 

$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not update data: ' . mysql_error()); 
} 
echo "Updated data successfully\n"; 

} 


?> 
</body> 
</html> 

formları veritabanı cezası içeriğini gösterir, ancak güncellenmesi üzerine bu mesaj çıktı:

Eğer SQL sözdizimi bir hata var; Doğru sözdizimi yakın kullanmak için MySQL sunucu sürümü karşılık geldiğini kılavuzu kontrol '1' hattı 1 Bu konuda bana olsun herhangi bir yardım takdir

de.

+4

'mysql_ *' fonksiyonları ** artık ** korunur ve yeni kod temeli kullanılmamalıdır. Yeni API'ler lehine aşamalı olarak kaldırılıyor. Bunun yerine [** hazırlanmış ifadeler **] 'i (https://www.youtube.com/watch?v=nLinqtCfhKY) [PDO] (http://php.net/pdo) veya [MySQLi] ile birlikte kullanmalısınız. http://php.net/mysqli). –

+1

Bu şekilde çalışamazsınız, çünkü giriş alanları için her zaman aynı adı taşıyan çok formunuz vardır. Ayrıca en azından gizli bir alana 'namn' koymak için eksiksiniz. Ve çok fazla kapanış kaçırdınız '' '' – djot

+1

@djot Çok formlu şeyleri işaretlediğiniz için teşekkürler! UPDATE sorgusunu statik adlar kullanmadan giriş kutularına nasıl işaret edebilirim? – user2052849

cevap

4

yerine mysql kullanımı mysqli ve veritabanı adını veya şema geçmesi gerekiyor:

önce:

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

sonra:

$conn = mysql_connect($dbhost, $dbuser, $dbpass, $myDBname); 
+0

Bunun için teşekkürler. Ancak sahip olduğum sorunu düzeltmedi. – user2052849

+0

kodun sonuna kadar bağlantıyı kapatmayı deneyin, şunu yazın: 'mysql_close ($ conn);' –

+0

her zaman, bir bağlantı açtığınızda, kullanımdan sonra, bağlantıyı kapatmanız gerekiyor –

2

Güncelleme sorgu bazı sorunları olabilir

$query = "UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' "; 
echo $query; 

Lütfen değişkeninizin qoutes (') ile değerler içermediğinden emin olun, sorgu bir yere bölünebilir.

sorgu yankı ve phpmyadmin kendisinde yürütmek deneyin. Sonra sorunları bulabilirsiniz.

1
Zaten burada sorgu

$sql = mysql_query("UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'"); 

Yani bu hat Böyle bir şey deneyin

$retval = mysql_query($sql, $conn); //$sql is not a query its a result set here 

sorunu var idam

: Bir not olarak

$sql = "UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'";  
$retval = mysql_query($sql, $conn); //execute your query 

: MySQL_ * uzantı kullanımdan kaldırılmıştır MySQLi_ * veya PDOBunun yerine.

+1

'u çalıştırma iznine sahip olup olmadığını kontrol edin Teşekkür ederiz! Bu, "SQL sözdiziminde bir hata var" msg, ancak, DB'im hala yeni eklenen içerikle güncellenmiyor. – user2052849

+1

Girdi kutunuzu, aynı ada sahip birçok girdi öğesi yaratacak bir döngüde oluşturduğunuz için db'niz güncellenmiyor. Girdi alanlarının adını bu gibi bir diziye çevirerek deneyebilirsiniz: '. Bunu her giriş elemanı için yapmalı ve buna göre işlem yapmalısınız. – Konsole

0

Eğer sql sözdiziminde hata var.

Lütfen bu sorguyu ve satın almayı kullanın.

$query = mysql_query("UPDATE `anstalld` SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' "); 
0

Bu şekilde deneyin. Tablo adını tırnak içine alın (``). değişkeninin yanında "". $ Xyz. "'.

$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error()); 
+1

Kodunuz – Naktibalda

+0

geçerli değil. Sadece bu kod ile çalışıyorum. Hala nasıl? hatayı işaret edebilir misin? –

+1

'u geliştirebilirim. Tırnaklarınızda bir sorun var, ilk dizi "UPDATE" anstalld 'SET mandag = "bir sonraki'. $ Mandag. ', Yok çünkü bir ayrıştırma hatası alırsınız. onların arasında. Tüm hatalarınızı düzeltirseniz, kodunuz – Naktibalda

1

Kişisel sql yanlıştır:

Yani sql sorgusu gibi olacak.

$sql = mysql_query("UPDATE anstalld.... 

sadece

$sql = "UPDATE anstalld...