我的数据库没有更新

时间:2017-03-07 20:17:42

标签: php sql database

所以,

我是一个'书呆子'的开始,现在我的工作是做一个人们可以在输入中输入他们名字的时间表。我使用以下代码与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); } ?>

该网站表示正在保存,但更新后的信息不会显示在数据库中。有没有人知道我在这种情况下做错了什么?附:它是一个没有按钮的自动更新表单。

1 个答案:

答案 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);
}