WHERE使用INSERT语句子句的MySQL / PHP的[关闭]WHERE使用INSERT语句子

2019-05-12 13:06发布

在谷歌搜索后,我才知道,在我的INSERT查询我不能使用WHERE子句。但是我想在列“Book_4”插入值,其中“student_id数据= 1”

我怎样才能做到这一点 ?? 是否有任何替代做到这一点?

将感谢你!

$Query = "INSERT INTO issued_books (Book_4) VALUES ('$IssuedBookNumber')" ;

编辑:更多详细信息使用插入查询,当我插入列“student_id数据”在我的表中的值。 student_id数据的行(除student_id数据)中的所有列在我的数据库显示为0。 我逼债知道这是什么0根据DB手段。 如果是数字0,那么应该更新使用UPDATE语句可能是空或数字0。 但每当我试图更新它,它永远不会更新使用UPDATE语句。 这就是为什么我要问!

PS:所有列具有数据类型INT。

希望你明白我想说的:)

下面是完整的代码。 假设:已创建具有值student_id数据2. IssuedBookNumber = 51

使用上述的值:结果=创建一个新的行具有的所有列0以外的列“IssuedBookNumber”,即具有值= 51。

虽然我想,结果应该是:在行student_id数据= 2,Book_4应该是51。

点是,当我在student_id数据插入的值,所有其它列在同一行上变为0。 但是,当任何上具有任意数量的除了0相同的行的列的(这是对所有列自动来到时,i插入到student_id数据的值)。 更新查询将工作..!

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

Answer 1:

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

UPDATE issued_books
SET Book_4 = '$IssuedBookNumber'
WHERE Student_ID = '$Student_ID'

(我假设你已经正确转义$IssuedBookNumber$Student_ID



Answer 2:

如果你能在两列组合添加一个唯一索引(book_4,student_id数据)

这将是一个很好的查询andshould取代大部分代码上方

INSERT INTO issued_books (book_4, student_id) VALUES('$IssuedBookNumber','$Student_ID')
ON DUPLICATE KEY UPDATE
SET Book_4 = '$IssuedBookNumber';

注意:您在上面的循环是不需要的,因为$ 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);

事情你应该考虑,

  1. 切换到使用PDO或mysqli的
  2. 逃离你的变量是你的代码很容易受到SQL注入。 也许你切换到PDO或mysqli的后,您可以使用准备语句。


Answer 3:

为什么不能是这样的:

$Query = "INSERT INTO issued_books (Book_4, Student_ID)
           VALUES ('$IssuedBookNumber', '$Student_ID')"


Answer 4:

使用update语句。

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


文章来源: WHERE clause in INSERT statement using mysql/php [closed]