2012-02-14 71 views
1

我試圖在我的網站上插入有關用戶的數據,但我認爲我使用的MySQL查詢是無效的。我想在'pph_user_profile'表中的'pph_user_bio'列中插入值'$ profile',但是在該表內部是一個連接到名爲'users'的表的外鍵,該表存儲用戶'_id',所以我只想數據庫將數據($ profile)插入到相應的'_id'中,該_id被設置爲當前會話ID。查詢MySQL數據庫以插入特定記錄

$query = "INSERT INTO pph_user_profile (pph_user_profile) VALUES ($profile)" . 
"SELECT _id " . 
"FROM users" . 
"WHERE _id = ". $_SESSION['_id_of_user']; 
$result = mysql_query($query); 

我對MySQL很新,所以有人可以告訴我我犯了什麼錯誤嗎?

編輯:

這裏是一個更新的查詢,我還在試圖做同樣的事情,沒有行的「pph_user_profile」存在,所以這肯定插入。

$query = "INSERT INTO pph_user_profile (_id) VALUES " . $_SESSION['_id_of_user']; 
mysql_query($query);      

$query = "INSERT INTO pph_user_profile (pph_user_bio) VALUES ($bio) WHERE _id = " . $_SESSION['_id_of_user'];                    
mysql_query($query); 
+0

如果要插入到特定列中,則需要將「pph_user_profile」的第二個實例更改爲「pph_user_bio」。查看下面的完整查詢的答案。 – 2012-02-14 19:28:01

回答

2

我想你可能會尋找一個UPDATE語句,而不是一個INSERT的:

$query = "UPDATE pph_user_profile SET pph_user_profile=$profile" . 
"WHERE _id = ". $_SESSION['_id_of_user']; 

您使用UPDATE設置在現有記錄中的值,並且可以使用WHERE子句指定要更新的記錄。

要插入新行,設置兩列,你可以這樣做:

$query = "INSERT INTO pph_user_profile (pph_user_profile, _id)". 
"VALUES ($profile, ". $_SESSION['_id_of_user'] .")"; 

要插入新行,但如果鍵已經存在更新,使用INSERT INTO ... ON DUPLICATE KEY UPDATE

$query = "INSERT INTO pph_user_profile (pph_user_profile, _id)". 
"VALUES ($profile, ". $_SESSION['_id_of_user'] .")". 
"ON DUPLICATE KEY UPDATE pph_user_profile = $profile"; 
+0

目前表中沒有行,所以我仍然認爲它是插入的,你會介意改變你的例子,以便它插入嗎? – 2012-02-14 20:05:24

+0

我更新了查詢,並給出了兩個更多的例子。 – 2012-02-14 20:21:46

1

pph_user_profile中的行是否已經存在?如果是的話,你想更新而不是INSERT。如果不是,則需要插入用戶的數據和ID。

您的SQL無效,因爲您試圖運行兩個不同的語句而不分離它們。如果您直接在服務器上運行SQL,則需要放置一個;它們之間。由於您是通過PHP來完成這項工作的,因此您應該限制自己對每個調用mysql_query()的查詢 - 例如,打兩個調用,每個查詢一個調用。

編輯

您使用

$query = "INSERT INTO pph_user_profile (_id) VALUES " . $_SESSION['_id_of_user']; 
mysql_query($query);      

$query = "INSERT INTO pph_user_profile (pph_user_bio) VALUES ($bio) WHERE _id = " . $_SESSION['_id_of_user'];                    
mysql_query($query); 

嘗試:

$query = "INSERT INTO pph_user_profile SET `_id` = '{$_SESSION['_id_of_user']}', `pph_user_bio` = '$bio'"; 
mysql_query($query) || die("Error inserting into pph_user_profile: " . mysql_error()); 
+1

我同意,我會編輯我的代碼,向您顯示我的新查詢,但它仍然無法使用。 – 2012-02-14 20:06:52