【发布时间】:2023-09-02 00:35:01
【问题描述】:
您好 srry 英语不好,我正在尝试使用 fetch 请求将一些表单数据插入我的 sql 数据库,添加了行并且 id 计数 +1,但没有向列“nomtar”添加额外数据,” destar”等
提交表单的JS函数:
function enviarDatos(e){
e.preventDefault();
var nomtar = document.getElementById('nomtar').value;
var destar = document.getElementById('destar').value;
var usu2tar = document.getElementById('usu2tar').value;
var fectar = document.getElementById('fectar').value;
formData = new FormData();
formData.append('nomtar',nomtar);
formData.append('destar',destar);
formData.append('usu2tar',usu2tar);
formData.append('fectar',fectar);
fetch('servicios/agregar.php',{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(formData)
}).then(response => {
if(response.ok){
console.log("datos enviados");
}
else{
console.log("datos no enviados");
}
}).catch((error) => {
console.log(error)
});
}
agregar.php 文件:
<?php
session_start();
include('conexion.php');
$data = json_decode(file_get_contents('php://input'), true);
$nomtar=$data['nomtar'];
$destar=$data['destar'];
$fectar=date('Y-m-d',strtotime($data['fectar']));
$usu1tar=$_SESSION['idusu'];
$usu2tar=$data['usu2tar'];
$query="select idusu from usuario where nombre='$usu2tar'";
$result1=mysqli_query($con,$query);
if($result1){
while($row=mysqli_fetch_array($result1)){
$idusu=$row['idusu'];
}
}
$sql="INSERT INTO tarea(usu1tar,usu2tar,nomtar,destar,fectar,esttar) VALUES('$usu1tar','$idusu','$nomtar','$destar','$fectar',1)";
$result2=mysqli_query($con,$sql) or die(mysqli_error($con));
mysqli_close($con);
?>
【问题讨论】:
-
你做了什么调试?变量有什么值?无论如何,这不是编写数据库代码的方式。请查看准备好的语句,您将使您的代码更安全,并且很有可能解决您的问题。
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
-
在代码中使用
die(mysqli_error($conn));是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?