我有下面的代码来更新我的MySQL数据库,它正在运行,但是当我使用phpmyadmin检查rcords时它没有更新数据库。告诉我。
$database = "carzilla";
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$manufacturerTable = $_POST[vehicleManufacturer];
$numberToSearch = $_POST[vehicleIdNo];
$engineType = $_POST[engineType];
$engineCC = $_POST[engineCC];
$year = $_POST[year];
$numberofDoors = $_POST[numberofDoors];
$tireSize = $_POST[tireSize];
$chasisNumber = $_POST[chasisNumber];
$vehicleMake = $_POST[vehicleMake];
$price=$_POST[price];
mysql_select_db("$database", $con);
$sql = mysql_query("UPDATE $manufacturerTable SET username='vehicleMake',
engineType='$engineType', engineCC='$engineCC', year='$year', chasisNo='$chasisNumber', numberOfDoors='$numberofDoors' ,numberOfDoors='$numberofDoors', tireSize='$tireSize', price='$price' WHERE `index` ='$id'");
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo 'record has been successfuly';
mysql_close($con);
?>
答案 0 :(得分:0)
仔细查看您的查询。您在同一语句中以几种不同的方式引用PHP变量。在查询$ manufacturerTable只是$ manufacturerTable中,你用一个单引号包含其他一些,其中一些你删除$,其他你不删除。我知道我经常这么讲,但你应该考虑使用准备好的陈述。他们在查询中使用变量来完成所有猜测,并且它们可以防止您被注入黑客攻击。但这里简短的回答是您没有在查询中正确引用变量。
答案 1 :(得分:-1)
有时将变量直接放在语法中可能会导致问题。您是否尝试使用串联进行查询。
$query = "UPDATE ".$manufacturerTable." SET username='vehicleMake', engineType='."$engineType."', engineCC='".$engineCC."', year='".$year."', chasisNo='".$chasisNumber."', numberOfDoors='".$numberofDoors."' ,numberOfDoors='".$numberofDoors."', tireSize='".$tireSize."', price='".$price."' WHERE index =".$id;
$sql = mysql_query($query); # this should be put in the if else
如果index是基于数字的,则不需要''围绕它。 Plus是username ='vehicleMake'或者是变量。如果它是一个变量,添加$或使用其余的连接。您的SQL检查应该如下所示。
if (mysql_query($query))
{
echo 'record has been successfuly';
} else {
die('Error: ' . mysql_error() . ' | ' . $query);
}
导出查询的原因是您可以手动尝试以确保其有效以及您可能获得的错误。 phpMySQL有时会显示与mysql_error()不同的错误
另外,您应该使用mysql_escape_string()或mysql_real_escape_string()
转义用户输入的所有输入