我有一个表单来更新有关产品的信息。表单从数据库中获取值并将其发送到应更新数据库的页面。我检查该表单正确地将值发送到第二页。但是数据库的更新功能没有更新。
更新(第二)页面的代码是这样的:
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.";
}
我怎么能解决这个问题?
答案 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略有不同,所以它并不容易。