【问题标题】:MYSQL INSERT not workingMYSQL 插入不起作用
【发布时间】:2011-03-07 23:13:21
【问题描述】:

我不明白为什么我的 MY_SQL 插入不起作用。

<?php
$sub = $_POST['submit'];


if($sub)
{

$title = $_COOKIE['newstitle'];
$body = $_COOKIE['newsbody'];
$sneak = $_COOKIE['newssneak'];
$date = date("Y-d-m");
$postedby = $_COOKIE['userlogin'];

$connect = mysql_connect("localhost","admin","00904684") or die("Couldn't Connect!");
mysql_select_db("dr") or die("Couldn't find DB.");

$insert = mysql_query
("
INSERT INTO news(`id`,`title`,`summary`,`body`,`date`,`postedby`)
VALUES ('NULL','".$title."','".$sneak."','".$body."','".$date."','".$postedby."')
");
mysql_close($connect);



header('Location: ../index.php');


}
else echo (mysql_error());

?>

我的代码在我向其中添加了一个新的字段“摘要”之前一直有效,因为它没有工作,但我知道变量正在正确传递。

这是我的数据库布局:

标识 |标题 |总结 |身体 |日期 |发帖人

【问题讨论】:

  • 添加 if (!$insert) echo mysql_error(); 以查看 mySQL 抛出了什么错误
  • 你有什么错误?如果我将我的newstitle cookie 编辑为具有" OR 1=1; 的值怎么办? mysql_real_escape_string() 在这个例子中是你的朋友,或者 PDO 是一个更好的朋友 :)
  • 1. 阅读 mysql_real_escape_string -- 2. 尝试在查询后立即回显 mysql_error() 以查看您遇到的错误并将其发布在此处。谢谢

标签: php mysql insert


【解决方案1】:

你可以让 ID 为 NULL 你可以试试这个

INSERT INTO news(`title`,`summary`,`body`,`date`,`postedby`)
VALUES ('".$title."','".$sneak."','".$body."','".$date."','".$postedby."')

通过从插入中删除 Id 字段,它将成为默认值,无论是 null 还是 auto inc。

【讨论】:

    【解决方案2】:

    您没有逃避您的输入,这让您对 SQL 注入敞开了大门——这很可能是您的问题。我敢打赌,“摘要”的内容中有一个单引号,这会破坏您的查询。你应该这样做:

    $title = mysql_real_escape_string($_COOKIE['newstitle']);
    $body = mysql_real_escape_string($_COOKIE['newsbody']);
    $sneak = mysql_real_escape_string($_COOKIE['newssneak']);
    $date = date("Y-d-m");
    $postedby = mysql_real_escape_string($_COOKIE['userlogin']);
    

    【讨论】:

    • 这是一个很好的呼喊。我看不到任何语法问题,所以这是一个不错的选择。 +1
    【解决方案3】:

    如果您实际上是要在 ID 字段中插入字符串“NULL”,那应该没问题。我怀疑你的意思是安装 NULL (注意没有引号),意思是“没有价值”。如果是这种情况,请删除引号,或者像@nhutto 所说的那样完全删除该列。

    【讨论】:

      【解决方案4】:

      这是我的尝试。

      <?php
      
      if($sub)
      {
          $title       = mysql_real_escape_string($_COOKIE['newstitle']);
          $body        = mysql_real_escape_string( $_COOKIE['newsbody']);
          $postedby    = mysql_real_escape_string($_COOKIE['userlogin']);
          $sneak       = mysql_real_escape_string($_COOKIE['newssneak']);
          $date        = date('Y-d-m');
      
          $connect = mysql_connect('Localhost', 'admin', '00904684') or die('Could not connect to database.');
                     mysql_select_db('dr') or die('Could not find database.');
      
          $insert  = mysql_query('INSERT_INTO news(`title`, `summary`, `body`, `date`, `postedby`) 
                                              VALUES(\''. $title . '\', \''. $sneak . '\', \''. $body . '\', \''. $date . '\', \''. $postedby . '\')');
                     mysql_close();
      
          header('Location: ../index.php');
      }
      else {
          echo mysql_error();
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 2013-08-06
        相关资源
        最近更新 更多