2011-07-27 90 views
2

我想爲我的MySQL數據庫創建一個2字段輸入表單。我連接到數據庫沒有問題,甚至可以發佈,如果我想,但表單是給出錯誤。 (我在這一點上已經連接到數據庫,我可以測試工作)簡單的PHP-MySQL表格的問題

這是形式:

<form action="insert.php" method="post"> 
Title: <input type="text" name="title" /> 
Privacy: <select type="text" name="privacy" /> 
    <option value="public">Publico</option> 
    <option value="private">Privado</option> 
</select> 
<input type="submit" /> 
</form> 

這是insert.php文件:

<? 
mysql_select_db("copoetry", $con); 
$sql="INSERT INTO Poems (Title, Privacy) 
VALUES 
('$_POST[title]','$_POST[privacy]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 
mysql_close($con) 
?> 

當我按提交我得到這個錯誤:

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 2 

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/content/02/6945202/html/copoetry/insert.php on line 7 
Error: 

我在做什麼錯了?謝謝

+1

你在哪裏連接到數據庫? –

+1

除了缺少數據庫連接之外,查詢字符串不正確:執行'echo $ sql;'查看原因。不要忘記清理你的輸入。 – JJJ

+0

$ con在我的頭文件中定義,將PHP代碼直接放在文件中,在數據庫中寫入一個空行,以便連接起作用。但是,當放在不同的文件,我得到這個錯誤。 – lisovaccaro

回答

2

您的$con變量應該與mysql_connect();持有與數據庫的連接,您似乎在某個點刪除此行。

EG:

$con = mysql_connect('host', 'user', 'pass') or die(mysql_error()); 

一旦你完成了這一切成功的mysql_*電話將使用該連接,所以你可以擺脫$ CON變量的反正。

ALSO 不要忘記來逃避輸入,因此是安全的,插入$_POST, $_GET$_REQUEST變量直接進入MySQL的是非常不安全的。使你至少可以在上運行mysql_real_escape_string();每一個你從窗體或曲奇得到的輸入。

EG

// Create a shortcut function somewhere early in your script 
function mes($input) { 
    return mysql_real_escape_string($input); 
} 

// SQL Example 
$sql = "INSERT INTO Poems (Title, Privacy) VALUES ('".mes($_POST['title'])."','".mes($_POST['privacy'])."')"; 

注字符串連接(使用句號)來分隔串/變量。

+0

我在頭文件中定義了$ con,我沒有意識到我必須在插入文件中再次定義它。謝謝 – lisovaccaro

+0

也謝謝你的信息,你能告訴我應該在哪裏添加mysql_real_escape_string(); ?我不知道它應該是哪部分代碼。謝謝 – lisovaccaro

+0

@ Liso22更新我的答案。你不需要重新定義$ con,我猜這是不可能的,因爲任何原因。 – Dunhamzzz

1

你錯過了mysql_connect()。嘗試添加這個。 此外,運行任何來自$_GET/$_POST/$_REQUEST的查詢都是非常不安全的。

0

有沒有聯接到你的數據庫;-)

0

我想你已經忘記了指定的mysql_connect()命令。