2013-06-19 153 views
0

我找不出什麼問題與我的PHP,但INSERT函數似乎總是失敗。我列出了正確的表格行,但這可能只是一個簡單的語法問題。如果需要該代碼,我也可以提供。這是我的PHP和數據庫結構:PHP簡單插入問題

enter image description here

<?php 
$con = mysql_connect('***','***','***'); 
    if (!$con) 
{ 
    echo "Failed to make connection."; 
    exit; 
} 
$db = mysql_select_db('***'); 
if (!$db) 
{ 
    echo "Failed to select db."; 
    exit; 
} 
$username = $_POST['username']; 
$password = $_POST['password']; 
$name  = $_POST['name']; 
$email  = $_POST['email']; 
$sql  = "SELECT username,email FROM Users WHERE username = '" . $username . "' OR email = '" . $email . "'"; 
$query  = mysql_query($sql); 
if (mysql_num_rows($query) > 0) 
{ 
    echo "That username or email already exists"; 
} 
else 
{ 
    $insert = "INSERT INTO Users(username,password,name,email) VALUES ('" . $username . "','" . $password . "','" . $name . "','" . $email . "')"; 
    $query = mysql_query($insert); 
    if ($query) 
    { 
     echo "Thanks for registering. You may now login."; 
    } 
    else 
    { 
     echo "Insert failed"; 
    } 
} 
?> 
+2

什麼是MySQL錯誤 – zod

+2

是id是自動遞增? – zod

+2

也是你的腳本充滿了SQL注入漏洞,請閱讀http://php.net/manual/en/security.database.sql-injection.php :) – faffaffaff

回答

1

拋出這個錯誤。你儘管去之前住就拿了這一點。

$query = mysql_query($insert); 
if (!$query) { 
    die('Invalid query: ' . mysql_error()); 
} else { 
    echo "Thanks for registering. You may now login."; 
} 

此外,您的登錄表單的建議。使用http://www.php.net/manual/en/function.mysql-real-escape-string.php將輸入到數據庫中的東西轉義出來。我還建議找到一個很好的正則表達式來驗證電子郵件,然後再保存它。甚至至少可以散列密碼。

+0

在php中有過濾器,那麼爲什麼你想重新發明輪子 – bugwheels94

+0

好點。假設他們至少在PHP 5.2 IIRC。 – IchBin

+0

是否可以使用上面的當前腳本顯示一些清理數據的示例? – Klinetel

1

可能是你沒有在用戶和「(」之間有一個空格 另外,是用大寫字母你的表 也許表。有一些前綴?如果查詢失敗,所以你可以看到發生了什麼

+1

分隔符字符周圍的空格不是必需的。 – Barmar

1

這是未經測試,但它可能像這樣簡單:

$insert = "INSERT INTO Users(username,password,name,email) VALUES ('$username','$password','$name','$email')"; 
+0

謝謝,你知道如何在Mysqli中重寫這個腳本嗎? – Klinetel