使用php更新数据库不起作用

使用php更新数据库不起作用,php,mysql,post,Php,Mysql,Post,我有一个表格来更新产品信息。表单从数据库获取值,并将其发送到应该更新数据库的页面。我检查了表单是否正确地将值发送到第二页。但数据库的更新功能不是更新 更新(第二)页的代码如下所示: include("database.php"); if (isset($_REQUEST["kullanici"])) { include "database.php"; $sql = ("select * from uye"); } else { header ("Location: uyari.html");

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

更新(第二)页的代码如下所示:

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.";
}

如何解决此问题?

应引用查询变量,并尝试将更新查询更改为

$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\u real\u escape\u string()
来转义帖子数据


注意:-
mysql.*
已被弃用使用
mysqli.*
PDO
更新/插入字符串时必须在字段周围添加引号。这同样适用于日期字段

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

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


在PHP中尝试使用mysqli而不是mysql(折旧),您也可以使用PDO,但是PDO不如mysqli全面和最新,因此速度稍慢。PDO与MYSQLI相比的唯一优势是PDO也可以与PostgeSQL一起使用,因此切换数据库引擎更容易,但是MYSQL和PostreSQL之间的SQL略有不同,所以没有那么容易。

谢谢您的回答;mysql使用了引号。我有一个不同的页面,做相同的工作,只有金额增量(miktar)。它只更改一个变量,并且在该文件上没有这样的引号$sql=(“更新存储集miktar=$cikar,其中id=$id”);--这很好用。所以我不认为这个问题是由引用引起的。
$personel = mysql_real_escape_string(substr($_POST['personel'], 0, 45)); // 45 = string length
$id = intval($_POST['id']);