所以,
我是一个'书呆子'的开始,现在我的工作是做一个人们可以在输入中输入他们名字的时间表。我使用以下代码与JS合作:
var timeoutId; $('form input').on('input propertychange change', function() {
console.log('Invoer bewerking');
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
saveToDB();
}, 1000); }); function saveToDB() { console.log('Opslaan naar Database');
form = $('.formulier24');
$.ajax({
url: "ajax.php",
type: "POST",
data: form.serialize(),
beforeSend: function(xhr) {
$('.HowAbout').html('Opslaan...');
},
success: function(data) { console.error(data) ;
var jqObj = jQuery(data);
var d = new Date();
$('.HowAbout').html('Opgeslagen om: ' + d.toLocaleTimeString());
},
}); } $('.formulier24').submit(function(e) {
saveToDB();
e.preventDefault(); });
和AJAX文件如下代码:
<?php include ('connect.php'); if(isset($_POST['formulier24'])) {
$userName = $_POST['userName'];
$hours = $_POST['hours'];
$sql = "UPDATE evenement SET userName = '$userName' WHERE hours = '$hours'";
mysql_select_db('u7105d15197_main');
$retval = mysql_query($sql, $conn);
if (!$retval) {
die('Could not update data: ' . mysql_error());
}
echo " Updated data successfully\n";
mysql_close($conn); } ?>
该网站表示正在保存,但更新后的信息不会显示在数据库中。有没有人知道我在这种情况下做错了什么?附:它是一个没有按钮的自动更新表单。
答案 0 :(得分:0)
我怀疑您的问题是您的UPDATE
查询正在尝试更新不存在的行。 REPLACE
查询将插入数据,或者在与表键冲突时替换它。
在您解决问题的同时,您也可以抛弃上面的代码。给我30秒的网页,我可以擦除你的整个数据库。 (例如,如果有人将Hours
发布为foo' OR 1=1 OR 'foo
,会发生什么?)
这是个人偏好的问题,但我发现PDO更容易使用。它不那么冗长,可以更容易地构建prepared statements,这是任何Web应用程序的基本安全措施。它还允许您使用现代错误处理方法,如exceptions。
<?php
/* this block could be in a separate include file if it's going to be reused */
$db_host = "localhost";
$db_name = "u7105d15197_main";
$db_user = "user";
$db_pass = "asldkfjwlekj";
$db_opts = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
);
$conn = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass, $db_opts);
if(isset($_POST['formulier24'])) {
$sql = "REPLACE INTO evenement SET userName = ?, hours = ?";
$parameters = array($_POST["userName"], $_POST["hours"]);
try {
$stmt = $conn->prepare($sql);
$result = $stmt->execute($parameters);
$return = "Updated data successfully!";
} catch (PDOException $e) {
$return = "Could not update data! Error: " . $e->getMessage();
}
header("Content-Type: application/json");
echo json_encode($return);
}