无法更新数据库使用php
我有一个以下代码用于在数据库中输入数据..我明确地回显值,以查看他们是否有正确的值或他们有正确的值,但我得到的值数据库完全不同。无法更新数据库使用php
这里是我的代码
<?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)
?>
i的值在这样的数据库 - [R获得:从MySQL
Source Username Location Category Complaint Date Status Update
0 Singapore 0 0000-00-00 Pending Edit
列表数据,您应该提供没有列名的数据只值:
$sql="INSERT INTO sample VALUES(ID, '$source', '$username', '$location', '$category', '$complaint', '$date', '$status')";
此外,如果你只有一个数据库连接,你不能定义$ con mysql_query()中的变量。像这样:mysql_query($sql)
。
正确的语法:
$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);
为什么downvote?只是为了好玩或者你不想做什么? –
是否需要?因为我以前的代码用于工作,即使没有 – vedant
您应该始终使用正确的语法-ES,因为您将永远不会知道何时弃用/错误的语法将消失/不再工作... –
问题是与以下行:
<?php
$sql="INSERT INTO sample VALUES(ID=NULL,source='$source',username='$username', location='$location', category='$category',complaint=
'$complaint',date='$date',status='$status')";
?>
如果你检查数据库中的结果,你会发现值的顺序是错误的,使用t他改为:
<?php
$sql="INSERT INTO sample(ID, source, username, location, category, complaint, date, status) VALUES(NULL, '$source', '$username', '$location', '$category', '$complaint','$date','$status')";
?>
请阅读什么Albireo
张贴在他的评论。你的代码非常脆弱。
<?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
,而不是一两件事。
给我们'$ _POST'的'var_dump'或'print_r'和相应的MySQL行 –
请阅读[this](http://en.wikipedia.org/wiki/SQL_injection)和[this]( http://php.net/manual/en/security.database.sql-injection.php)。 – Albireo
你的代码对sql注入攻击是开放的! – markus