使用mysql/php在INSERT语句中使用WHERE子句

使用mysql/php在INSERT语句中使用WHERE子句,php,mysql,sql-insert,Php,Mysql,Sql Insert,在谷歌上搜索之后,我知道, 我无法在INSERT查询中使用WHERE子句。。 但我想在Book_4列中插入一个值,其中Student_ID=1 我该怎么做?? 有没有其他办法可以这样做 我会感谢你的 $Query = "INSERT INTO issued_books (Book_4) VALUES ('$IssuedBookNumber')" ; 编辑: 更多细节 使用insert查询,当我在表中的Student_ID列中插入值时。Student_ID行中除Student_ID外的所有列在m

在谷歌上搜索之后,我知道, 我无法在INSERT查询中使用WHERE子句。。 但我想在Book_4列中插入一个值,其中Student_ID=1

我该怎么做?? 有没有其他办法可以这样做

我会感谢你的

$Query = "INSERT INTO issued_books (Book_4) VALUES ('$IssuedBookNumber')" ;
编辑: 更多细节
使用insert查询,当我在表中的Student_ID列中插入值时。Student_ID行中除Student_ID外的所有列在my DB中显示0。 根据DB,我不知道0是什么意思。 它可能为Null或数字0。 如果它是数字0,则应使用UPDATE语句对其进行更新。 但每当我试图更新它时,它都不会使用update语句进行更新。这就是为什么我要问

注意:所有列都有INT数据类型

希望你能理解我想说的:

这是完整的代码。 假设:已创建值为2的学生ID。 IssuedBookNumber=51

使用上述值: 结果=将创建一个新行,其中所有列均为0,但值为51的IssuedBookNumber列除外

虽然我想要,但结果应该是: 在行Student_ID=2,第四册应为51

关键是,当我在Student_ID上插入一个值时,同一行上的所有其他列都变为0。但是,当同一行中的任何列具有除0以外的任何数字时,当我在Student_ID.Update Query中插入值时,所有列上自动出现的数字将起作用

$IssuedBookNumber = $_POST['IssuedBookNumber'];
     $Student_ID = $_POST['StudentId'];

     $FetchingQuery = "SELECT * FROM issued_books WHERE Student_ID='" . $Student_ID . "'";

     $RunFetchingQuery = mysql_query($FetchingQuery);


     while ( $row = mysql_fetch_array( $RunFetchingQuery ) ) {

          $Book_1 = $row[ 'Book_1' ];
          $Book_2 = $row[ 'Book_2' ];
          $Book_3 = $row[ 'Book_3' ];
          $Book_4 = $row[ 'Book_4' ];
          $Book_5 = $row[ 'Book_5' ];

          }

          if(!empty($Book_4))
          {
               $Update =  "UPDATE issued_books SET Book_4='$IssuedBookNumber' WHERE Student_ID= '$Student_ID'";
             mysql_query ($Update);
          }

          else
          {
               $AddQuery = "INSERT INTO issued_books (Book_4) VALUES ('$IssuedBookNumber')";
    mysql_query ($AddQuery);
          }

那不是插页。这是一个更新。INSERT语句插入新行。UPDATE语句更新现有行


我假设您已经正确地转义了$IssuedBookNumber和$Student\u ID

为什么不这样做:

$Query = "INSERT INTO issued_books (Book_4, Student_ID)
           VALUES ('$IssuedBookNumber', '$Student_ID')"
使用update语句

update issued_books set Book_4 = $IssuedBookNumber
where Student_ID = '$Student_ID'

如果可以在2列组合的book_4,student_id上添加唯一索引

这将是一个很好的查询,应该替换上面的大部分代码

INSERT INTO issued_books (book_4, student_id) VALUES('$IssuedBookNumber','$Student_ID')
ON DUPLICATE KEY UPDATE
SET Book_4 = '$IssuedBookNumber';
注意:不需要执行上面的while循环,因为$Book_4将始终返回最后一行的值

然后,您的代码将如下所示:

$IssuedBookNumber = $_POST['IssuedBookNumber'];
$Student_ID = $_POST['StudentId'];

$Update =  "UPDATE issued_books SET Book_4='$IssuedBookNumber' WHERE Student_ID= '$Student_ID'";
mysql_query ($Update);
<>你应该考虑的事情,

切换到使用PDO或mysqli 如果您的代码容易受到SQL注入的攻击,请转义您的变量。也许在您切换到PDO或mysqli之后,您可以使用prepare语句。
这是因为INSERT语句不接受WHERE子句。。。。学习一点SQLas语句^但确实如此。我们需要知道您正在使用哪个MySQL API进行连接。什么?迈斯克利?PDO?其他?您的原始插入似乎让您失望,这就是为什么您的更新也让您失望的原因。插入不应该保存零,您应该使用自动增量,很可能是这样。@Fred ii-它的mysql,使用Phpmyadmin@@kojow7行已插入。无法再次插入具有相同id的学生id。他需要更新该行。@KirsSudh您如何知道该行已插入?可能该ID位于另一个表中,而该表使用了指向它的外键链接。OP从来没有提供足够的信息来了解其中一种方式。的确如此,@Mustasam问得不对。这是一个猜测,他在insert语句中使用where子句,也许他正在搜索一行并插入空的Book_4列。所以我们认为他可能正在更新。当我在表中的Student_ID列中插入一个值时,使用insert查询。Student_ID行中除Student_ID外的所有列在my DB中显示0。根据DB,我不知道0是什么意思。它可能为Null或数字0。如果它是数字0,则应使用UPDATE语句对其进行更新。但每当我试图更新它时,它都不会使用update语句进行更新。这就是为什么我要问!附言:所有列的数据类型都是INT。希望你们能理解我想说的:你们把所有列的数据类型都设置为INT?您在Book_4列中有什么类型的值?。如果已经插入了student_id列,则使用update语句进行更新。是的,所有数据类型都是INT。Book_4也是整数。我尝试过更新,但不起作用!如果已插入学生id列,则使用update语句。在使用update语句时添加where子句。编辑::-您试图在Books_4中更新的值是多少?感谢您的耐心等待,详细信息现在已更新:既然OP声明我知道我不能在INSERT查询中使用WHERE子句,您会怎么想。也许这是一个选项。当我在表中的Student_ID列中插入一个值时,如果他们使用insert query提前不知道记录是否存在,那么这是一个选项。Student_ID行中除Student_ID外的所有列在my DB中显示0。根据DB,我不知道0是什么意思。它可能为Null或数字0。如果它是数字0,则应使用UPDATE语句对其进行更新。但每当我试图更新它时,它都不会使用update语句进行更新。这就是为什么我要问!附言:所有列都有INT数据类型。希望您理解我想说的:@johncode变量可以在phpmyadmin中使用吗?OP声明,至少这是我得到的印象
他们试图在那里这样做。问题不清楚,我已投票决定就此结束,直到我们/我看到全部情况。他们越想澄清问题,问题就越不清楚:/
$IssuedBookNumber = $_POST['IssuedBookNumber'];
$Student_ID = $_POST['StudentId'];

$Update =  "UPDATE issued_books SET Book_4='$IssuedBookNumber' WHERE Student_ID= '$Student_ID'";
mysql_query ($Update);