查询MySQL数据库以插入特定记录

时间:2012-02-14 19:19:45

标签: php mysql database select

我正在尝试在我的网站上插入有关用户的数据,但我认为我使用的MySQL查询无效。我想在'pph_user_profile'表中的'pph_user_bio'列中插入值'$ profile',但是在该表中是一个外键,链接回一个名为'users'的表,该表存储用户的'_id'所以我只想要数据库将数据($ profile)插入到相应的'_id'中,该'_id'被设置为当前会话ID。

$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);

2 个答案:

答案 0 :(得分: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";

答案 1 :(得分: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());