使用php更新数据库无法正常工作

时间:2014-06-27 06:09:18

标签: php mysql post

我有一个表单来更新有关产品的信息。表单从数据库中获取值并将其发送到应更新数据库的页面。我检查该表单正确地将值发送到第二页。但是数据库的更新功能没有更新。

更新(第二)页面的代码是这样的:

include("database.php"); 

if (isset($_REQUEST["kullanici"])) {
include "database.php";
$sql = ("select * from uye");
}
else {
header ("Location: uyari.html");
}

$id = $_POST['id'];
$urunadi = $_POST['urunadi']; 
$malzemekodu = $_POST['malzemekodu']; 
$urunkategorisi = $_POST['urunkategorisi']; 
$birim = $_POST['birim']; 
$miktar = $_POST['miktar']; 
$personel = $_POST['personel']; 
$birimfiyat = $_POST['birimfiyat']; 
$fiyatbirimi = $_POST['fiyatbirimi']; 
$resim = $_POST['resim']; 

$sql = ("UPDATE depo SET id = $id, urunadi = $urunadi, malzemekodu = $malzemekodu, urunkategorisi = $urunkategorisi, birim = $birim, miktar = $miktar, personel = $personel, birimfiyat = $birimfiyat, fiyatbirimi = $fiyatbirimi, resim = $resim WHERE id = $id");
$kayit = mysql_query($sql);

if (isset ($kayit)){
echo "Stok Kaydınız Yapılmıştır.";

}
else {
echo "Stok Kayıt Başarısız.";
}

我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

应该引用

查询变量尝试将更新查询更改为

$sql = ("UPDATE depo SET id = '$id', urunadi = '$urunadi', malzemekodu = '$malzemekodu', urunkategorisi = '$urunkategorisi', birim = '$birim', miktar = '$miktar', personel = '$personel', birimfiyat = '$birimfiyat', fiyatbirimi = '$fiyatbirimi', resim = '$resim' WHERE id = '$id'");

如果仍有问题,请检查您的帖子数据是否在此页面上显示同时使用mysql_real_escape_string()来转发您的帖子数据

注意: - mysql_*已被弃用,使用mysqli_*PDO

答案 1 :(得分:0)

更新/插入字符串时,必须在字段周围添加引号。这同样适用于日期字段。

此外,您应该使用mysql_real_escape_string()格式化所有字符串,因为这可以防止黑客通过在字符串中传递SQL来攻击您的数据库。对于整数和浮点数,出于同样的原因,您应该使用intval()floatval()

最后,您还应该将字符串长度剪切为字符串字段的文本长度,在PHP中使用substr()。如果字符串长度超过字段允许的长度(某些较旧的浏览器不支持长度剪切),则可以防止错误。

$personel = mysql_real_escape_string(substr($_POST['personel'], 0, 45)); // 45 = string length
$id = intval($_POST['id']);

尝试在PHP中使用mysqli而不是mysql(折旧),你也可以使用PDO,但是PDO并不像MYSQLI那样全面和最新,并且由于这个稍微慢一点。 PDO优于MYSQLI的唯一优势是PDO也适用于PostgeSQL,因此切换数据库引擎更容易,但MYSQL和PostreSQL之间的SQL略有不同,所以它并不容易。