您需要檢查mysql_query()調用的返回值。
http://php.net/manual/en/function.mysql-query.php
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
現在,你永遠不會真正擊中了錯誤條件並不會真正看到什麼(如果有的話)的錯誤是,MySQL正在發回給你。
另外,您可能想要轉義您插入查詢的值,而不是僅執行正常字符串連接。如果你不這樣做,你的應用程序可能容易受到SQL注入攻擊。這裏是如何安全地生成查詢:
$query = sprintf("INSERT INTO staff (name, lastname, username, password, position, department, birthmonth, birthday, birthyear, location, phone, email, street, city, state, country, zip, tags, photo) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
mysql_real_escape_string($name),
mysql_real_escape_string($lastname),
mysql_real_escape_string($username),
mysql_real_escape_string($password),
mysql_real_escape_string($position),
mysql_real_escape_string($department),
mysql_real_escape_string($birthmonth),
mysql_real_escape_string($birthday),
mysql_real_escape_string($birthyear),
mysql_real_escape_string($location),
mysql_real_escape_string($phone),
mysql_real_escape_string($email),
mysql_real_escape_string($street),
mysql_real_escape_string($city),
mysql_real_escape_string($state),
mysql_real_escape_string($country),
mysql_real_escape_string($zip),
mysql_real_escape_string($tags),
mysql_real_escape_string($photo));
編輯:剛剛看到您的評論到另一個答案。如果您已經在進行轉義,如:
$birthday = mysql_real_escape_string(trim($_POST['birthday']));
那麼您在生成查詢時不需要轉義它。在生成查詢時進行轉義可能是更好的做法,因此顯然你不會錯過任何東西。
編輯2:根據文檔,mysql_connect()應該接受主機,用戶和密碼,然後您需要執行mysql_select_db()調用以選擇正確的數據庫。
http://www.php.net/manual/en/function.mysql-select-db.php
$dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$dbc) {
die('Could not connect: ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db(DB_NAME, $dbc);
if (!$db_selected) {
die ('Could not select database: ' . mysql_error());
}
(順便說一句,你應該修改你的問題,並放回原來的文本,所以可能是其他後來發現這個話題有用!)
您錯過了參數化查詢,有一件事... – Aaronaught 2010-03-23 01:56:21