无法使用php更新数据库

时间:2011-09-08 07:00:32

标签: php mysql database phpmyadmin

我有一个以下代码用于在数据库中输入数据..我专门回显了值以查看它们是否具有正确的值...它们具有正确的值但是我在数据库中获得的值完全不同。

这是我的代码

    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("sm_sample");
    $source=$_POST['source'];
    $username=$_POST['username'];
    $location=$_POST['location'];
    $category=$_POST['category'];
    $complaint=$_POST['complaint'];
    $status=$_POST['status'];
    $date=$_POST['date'];
    echo $source.$username.$location.$category.$complaint.$status.$date;

    $sql="INSERT INTO sample VALUES(ID=NULL,source='$source',username=
            '$username', location='$location', category='$category',complaint=
            '$complaint',date='$date',status='$status')";
    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }
    echo "1 record added";
    echo "<BR>";
    echo "<a href='usercom1.php'>View result</a>";
    mysql_close($con)
    ?> 

我在数据库中得到的值如下: 列出来自mysql的数据

Source Username  Location   Category Complaint     Date      Status     Update 
 0     Singapore                0    0000-00-00    Pending      Edit 

4 个答案:

答案 0 :(得分:1)

正确的语法:

$sql="INSERT INTO `sample`(`ID`,`source`,`username`, `location`,`category`,`complaint`,`date`,`status`) 
      VALUES (0, '$source','$username','$location','$category','$complaint','$date','$status')";

稍后编辑...您使用了错误的mysql_query和连接语法

$con = mysql_connect("localhost","root","") or die('database connection?');
mysql_select_db("sm_sample", $con) or die('wrong database?');
// and for $_POST you sould use mysql_real_escape_string
$source = mysql_real_escape_string($_POST['source']);
// ........................................
$sql="INSERT INTO `sample`(`ID`,`source`,`username`, `location`,`category`,`complaint`,`date`,`status`) 
      VALUES (0, '$source','$username','$location','$category','$complaint','$date','$status')";
mysql_query($sql) or die('Error: '.mysql_error().': '.mysql_errno());
// ........................................
mysql_close($con);

答案 1 :(得分:0)

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      echo ('Could not connect: ' . mysql_error());
      }

    mysql_select_db("sm_sample",$con);
    $source=$_POST['source'];
    $username=$_POST['username'];
    $location=$_POST['location'];
    $category=$_POST['category'];
    $complaint=$_POST['complaint'];
    $status=$_POST['status'];
    $date=$_POST['date'];
    echo $source.$username.$location.$category.$complaint.$status.$date;

    $sql="INSERT INTO sample ('source','username','location','category','complaint','status') VALUES('$source','$username','location','category','complaint','status' )";
    if (!mysql_query($sql))
      {
        echo ('Error: ' . mysql_error());
      }
    echo "1 record added";
    echo "<BR>";
    echo "<a href='usercom1.php'>View result</a>";
    mysql_close($con);
    ?> 

首先,如果它是自动增量,则不必添加id;如果使用当前时间戳,则不必添加日期;还有一件事从不使用die();,请使用echo

答案 2 :(得分:-1)

您应该只提供没有列名的数据值:

$sql="INSERT INTO sample VALUES(ID, '$source', '$username', '$location', '$category', '$complaint', '$date', '$status')";

此外,如果您只有一个数据库连接,则无法在mysql_query()中定义$ con变量。像这样:mysql_query($sql)

答案 3 :(得分:-1)

问题出在以下几行:

<?php
$sql="INSERT INTO sample VALUES(ID=NULL,source='$source',username='$username', location='$location', category='$category',complaint=
'$complaint',date='$date',status='$status')";
?>

如果检查数据库中的结果,您会看到值的顺序错误,请改用:

<?php
$sql="INSERT INTO sample(ID, source, username, location, category, complaint, date, status)  VALUES(NULL, '$source', '$username', '$location', '$category', '$complaint','$date','$status')";
?>

请阅读评论中发布的Albireo内容。您的代码非常容易受到攻击。