插入/更新查询

时间:2012-04-27 13:28:14

标签: php mysql

尝试插入或更新时,没有任何内容进入数据库。 这是表格布局

(
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user_id` int(11) NOT NULL,
 `thesis_Name` varchar(200) NOT NULL,
 `abstract` varchar(200) NOT NULL,
 `complete` int(2) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`)
)

正如您所看到的,id是唯一键。 user_id是会话所关注的内容。我希望user_id可以有两行,因此只有id应该是唯一的,因此它应该是关于是否插入或更新的关键。 这就是我一直在使用的:

 if (empty($err)) {
        $id= mysql_real_escape_string($_POST['id']);
        $thesis_Name = mysql_real_escape_string($_POST['thesis_Name']);
        $abstract = mysql_real_escape_string($_POST['abstract']);

$user_id = intval($_SESSION['user_id']);
$query = sprintf("
  INSERT INTO
    `thesis`(`id`,`user_id`, `thesis_Name`, `abstract`)
  VALUES
    ('%s','%s', '%s', '%s')
  ON DUPLICATE KEY UPDATE
   `thesis_Name` = VALUES(`thesis_Name`),
   `abstract` = VALUES(`abstract`)
      ", $id, $user_id, $thesis_Name, $abstract);

如果现在有,那么user_id也可以是唯一的,每个用户只有1行

2 个答案:

答案 0 :(得分:1)

您能告诉我们最终查询吗?在$query = sprintf(...)之后使用类似的内容:

echo $query

您的$abstract中可能只是一个简单的引用?您可以使用mysql_real_escape_string()来推荐它:

$thesis_Name = mysql_real_escape_string($thesis_Name);
$abstract = mysql_real_escape_string($abstract);

答案 1 :(得分:0)

  1. 要从mysql获取错误,您必须使用mysql_error()函数。
  2. 你必须转义你在查询中放置的字符串。
  3. 此处没有使用sprintf()。
  4. $user_id     = intval($_SESSION['user_id']);    
    $id          = mysql_real_escape_string($_POST['id']);
    $thesis_Name = mysql_real_escape_string($_POST['thesis_Name']);
    $abstract    = mysql_real_escape_string($_POST['abstract']);
    
    $query       = "INSERT INTO thesis (id, user_id, thesis_Name, abstract)
                    VALUES ('$id','$user_id', '$thesis_Name', '$abstract')
                    ON DUPLICATE KEY UPDATE
                        `thesis_Name` = VALUES(`thesis_Name`),
                        `abstract` = VALUES(`abstract`)";
    
    mysql_query($query) or trigger_error(mysql_error()." ".$query);
    

    如果您使用的是mysql *函数。

    然而,这是一种非常不寻常的方法 通常我们根据PHP逻辑决定使用哪个查询,比如

    if ($_POST['id']) {
        $query = "INSERT..."
    } else {
        $query = "UPDATE..."
    }
    
相关问题