2017-03-07 103 views
-2

所以,我的數據庫沒有更新

我是一個開始「書呆子」,現在我的工作就是讓一種時間表,人們可以把他們的名字在輸入。我與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

不是php精明,但這是正確的嗎? '$ sql =「UPDATE evenement SET userName ='$ userName'WHERE hours ='$ hours''你不是在使用'$ params'作爲文字嗎? –

+0

我不知道兄弟,有人告訴我這樣做ghehe .. –

+0

第一更新MySQL來的mysqli或PDO $ SQL = 「UPDATE evenement設置用戶名= '$用戶名' WHERE小時= '$小時'」; 然後回聲$ SQL; 模具(); 然後檢查警報,在phpmyadmin中運行這個查詢 –

回答

0

我懷疑你的問題是你的UPDATE查詢試圖更新一個不存在的行。 A REPLACE查詢將插入數據,或者如果與表鍵衝突,則將其替換。

當你正在解決這個問題時,你可能會拋出上面的代碼。給我30秒的網頁,我可以擦除你的整個數據庫。 (例如,如果會有人發帖Hoursfoo' 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); 
} 
+0

感謝bro @ miken32上午學習PDO:D –