Невозможно обновить базу данных с помощью php - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть следующий код для ввода данных в базу данных ... я специально повторил значения, чтобы увидеть, имеют ли они правильные значения или нет ... у них есть правильные значения, но значения, которые я получаю в базе данных, совершенно разные.

Вот мой код

    <?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)
    ?> 

значения, которые я получаю в базе данных r примерно так: Список данных из mysql

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

Ответы [ 4 ]

1 голос
/ 08 сентября 2011

Правильный синтаксис:

$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);
0 голосов
/ 20 июля 2013
<?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);
    ?> 

Во-первых, вам не нужно добавлять идентификатор, если это автоинкремент, и дату, если он использует текущую метку времени, и еще одну вещь, которая никогда не использует die();, вместо этого используйте echo.

0 голосов
/ 08 сентября 2011

Проблема заключается в следующей строке:

<?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 опубликовал в своем комментарии.Ваш код чрезвычайно уязвим.

0 голосов
/ 08 сентября 2011

Вы должны предоставить только ЗНАЧЕНИЯ данных без имен столбцов:

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

Также, если у вас есть только одно соединение с БД, вы не можете определить переменную $ con в mysql_query (). Как это: mysql_query($sql).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...