Php 插入/更新查询

Php 插入/更新查询,php,mysql,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`

当尝试插入或更新时,数据库中没有任何内容。 这是桌子的布局

(
 `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是唯一的密钥。用户id是会话查看的内容。我希望用户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);

如果没有其他方法,那么用户id也可以是唯一的,每个用户只有一行

您可以向我们显示最终查询吗?在
$query=sprintf(…)
之后使用类似的内容:

也许你的
$abstract
中有一句简单的引语?您可以使用
mysql\u real\u escape\u string()
来避免它:

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

你能告诉我们最后的问题吗?在
$query=sprintf(…)
之后使用类似的内容:

也许你的
$abstract
中有一句简单的引语?您可以使用
mysql\u real\u escape\u string()
来避免它:

$thesis_Name = mysql_real_escape_string($thesis_Name);
$abstract = mysql_real_escape_string($abstract);
  • 要从mysql获取错误,必须使用
    mysql\u error()
    函数
  • 您必须转义您在查询中放置的字符串
  • 这里没有sprintf()的用处
  • 如果您使用的是mysql*函数

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

    if ($_POST['id']) {
        $query = "INSERT..."
    } else {
        $query = "UPDATE..."
    }
    
  • 要从mysql获取错误,必须使用
    mysql\u error()
    函数
  • 您必须转义您在查询中放置的字符串
  • 这里没有sprintf()的用处
  • 如果您使用的是mysql*函数

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

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


    会发生什么?是否报告错误?你的具体问题是什么?或者我们应该和你一起猜测吗?看在上帝的份上,使用参数化查询如果你不知道Keith是什么意思,或者他为什么这么说,请阅读从哪里获得
    $id
    值?如果每个
    用户标识可以有两行,那么为该行创建一列(行号枚举(1,2))并在(用户标识,行号)上创建一个唯一键不是很容易吗?没有错误。它只是不放在桌子上发生了什么?是否报告错误?你的具体问题是什么?或者我们应该和你一起猜测吗?看在上帝的份上,使用参数化查询如果你不知道Keith是什么意思,或者他为什么这么说,请阅读从哪里获得
    $id
    值?如果每个
    用户标识可以有两行,那么为该行创建一列(行号枚举(1,2))并在(用户标识,行号)上创建一个唯一键不是很容易吗?没有错误。它只是不放在桌子上谢谢你的帮助。这样,它添加了insert,但添加了另一行(具有相同的id和不同的id),而不是更新我插入的内容。因此,现在不会添加第二行,但数据不会更改。按save时,它只会将我重定向到正确的页面。你建议试试你的第二段代码吗?就在这时,用die()更改trigger_error();可能是有一个错误显示,你只是没有看到它。让我们确定一下,您在查询中未引用$id有什么原因吗?它说“现在未定义”是错误的。但它不应该是未定义的。你有HTML格式的吗?谢谢你的帮助。这样,它添加了insert,但添加了另一行(具有相同的id和不同的id),而不是更新我插入的内容。因此,现在不会添加第二行,但数据不会更改。按save时,它只会将我重定向到正确的页面。你建议试试你的第二段代码吗?就在这时,用die()更改trigger_error();可能是有一个错误显示,你只是没有看到它。让我们确定一下,您在查询中未引用$id有什么原因吗?它说“现在未定义”是错误的。但它不应该是未定义的。有HTML格式的吗?