2016-09-15 108 views
-1

我已經梳理了本網站不停地尋找解決方案,但仍然空手而歸。 這是問題所在,無論何時我使用下列INSERT INTO語句,我的數據庫中都沒有插入任何內容,代碼運行順暢,但在一天結束時,我的數據庫仍然是空的(不包括手動插入的值)。 我還想指出,我運行了一個SELECT FROM語句,它很好地返回了從數據庫手動插入值。 反正這裏的代碼:INSERT INTO聲明無法正常工作PHP/MySQLI

連接到數據庫

$link = mysqli_connect("localhost", "root", "", "prototype"); 

插入代碼

if ($error) echo "There were error(s) in your signup details:".$error; 
else 
{ 

    $query = "SELECT * FROM `users` WHERE email = '".mysqli_real_escape_string($link, $_POST['email'])."'"; 

    $result = mysqli_query($link, $query); 

    $results = mysqli_num_rows($result); 

    echo $results; 

    if ($results) echo " This email address is already taken. Would you like to log in?"; 
    else 
    { 
    $query = "INSERT INTO `users`(`email`, `password`) VALUES ('".mysqli_real_escape_string($link, $_POST['email']).', '.md5(md5($_POST['email']).$_POST['password'])."')"; 

    mysqli_query($link, $query); 

    echo "You've been registered!"; 

    $_SESSION['id'] = mysqli_insert_id($link); 

    print_r($_SESSION); 

    // Redirect to logged in page 

    } 
+0

如果你使用'mysqli_query會發生什麼($ link,$ query)或者die('Unable to execute query。'。mysqli_error($ link));'而不是?它會給你一個有意義的錯誤嗎? – Blake

+2

這裏有一個關於如何調試的想法:echo包含SQL語句的字符串的內容。然後仔細查看SQL語句。我想你會發現VALUES()包含單個字符串文字,而不是兩個字符串文字。這裏有另一個想法:檢查來自mysqli_query的返回以驗證語句執行是否成功。如果沒有,使用'mysqli_error'返回MySQL錯誤信息。這裏有另外一個想法:MD5算法適用於驗證消息的*完整性*,但它不是*密碼散列的好選擇。 – spencer7593

+0

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/是否有您想要問的*問題?或者只是提供狀態報告? – spencer7593

回答

1

試圖改變你的插入查詢,如下

$query = "INSERT INTO `users`(`email`, `password`) VALUES ('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')";