如何将相关行插入mysql数据库?

时间:2011-09-21 01:08:18

标签: php mysql

我完全难过了。我在我的数据库中设置了两个表,一个称为主题,一个称为页面。我在我的数据库中为这些页面提供了一个subject_id,以便将它们连接到主题。我已动态显示包含主题和子页面的导航。我还创建了一些删除主题,编辑主题和编辑页面的php文件。我现在已经在每个主题上添加了一个链接,这样当您点击主题时,它会将您带到一个页面,希望我能够在所选父主题下添加新页面。还值得注意的是,我在链接中发送父主题ID以添加页面。 以下是我认为以某种方式给我带来问题的代码部分:

if(empty($errors)){
$id = mysql_prep($_GET['subj']);
$menu_name = mysql_prep($_POST['menu_name']);
$position = mysql_prep($_POST['position']);
$visible = mysql_prep($_POST['visible']);
$content = mysql_prep($_POST['content']);

$subject = get_subject_by_id($id));//This fetches the subject id from the db

$query = "INSERT INTO
pages WHERE subject_id = $subject
(
menu_name, position, visible, content
) VALUES (
'{$menu_name}', {$position}, {$visible}, '{$content}'
)";
$result = mysql_query($query, $db_connect);      
if (mysql_affected_rows() == 1){

echo "<p>suceess</p>";
} else { ....

我知道这是脱离背景但我认为通过发现问题可能会有一些运气。如果有人对此有任何见解,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

在insert语句中不能有where子句。

如果没有where子句,表将获得插入的行。如果您尝试更新现有行,这将证明where子句的合理性,那么您需要使用更新语句。

答案 1 :(得分:0)

正确的INSERT语法是:

INSERT INTO pages (subject_id, menu_name, position, visible, content) VALUES (?,?,?,?,?)

当然,使用适当的参数绑定,不使用字符串插值