为什么我的PHP代码没有删除数据库中的行?

时间:2014-08-07 18:13:00

标签: php mysql

下面的代码应该能够删除carProNumber='$searchTerm'的表ProCode ='$searchTerm1'中的一行,但事实并非如此。非常感谢任何帮助。

<?php
$searchTerm = trim($_GET['keyname']);
$searchTerm1 = trim($_GET['codename']);
//create a database connection
mysql_connect("localhost","root","") or die("Error:".mysql_error());
mysql_select_db("products");
//Delete the record
$updateQuery = "DELETE FROM car WHERE ProNumber = '$searchTerm' AND ProCode ='$searchTerm1'";
mysql_query($updateQuery) or die("Error: ".mysql_error());
?>

请注意,表格和列均已创建并填充了相应的数据 更新:
这个问题的答案的以下部分是什么解决了它 Mysql vs Mysqli功能

在PHP 5.5.0中不推荐使用mysql_ *函数,你应该使用mysqli_ *函数来确保你的脚本适用于较新的PHP版本。

http://php.net/manual/en/book.mysqli.php

3 个答案:

答案 0 :(得分:1)

列类型

请确保您的列类型正确无误。如果你将数据包装成这样的引号'1234',mysql会将数据解释为string,不加引号将其写成,它将被解释为integer

WHERE column = 1234列上的

integer WHERE column = '1234'列上的varchar

SQL注入

请在传递变量之前使用直接进入sql语句teh php mysqli_real_escape_string函数,以防止SQL Injections

http://php.net/manual/en/mysqli.real-escape-string.php

Mysql vs Mysqli函数

在PHP mysql_*中不推荐使用

5.5.0函数,您应该使用mysqli_*函数来确保您的脚本适用于较新的PHP版本。

http://php.net/manual/en/book.mysqli.php

逻辑错误

确保要删除的数据存在于Mysql数据库中

答案 1 :(得分:1)

数据库连接出错,在未设置数据库连接之前无法删除记录

//create a database connection
mysql_connect("localhost","root","") or die("Error:".mysql_error());
mysql_select_db("products");

Change above code to this 

$connection = mysql_connect("localhost","root","") or die("Error:".mysql_error());
mysql_select_db("products",$connection);

答案 2 :(得分:0)

只是一个猜测,但您可能遇到的一个问题是$searchTerm周围有单引号。你搜索一个数字,但你传递一个字符串。

可能的解决方法(请注意$searchTerm中缺少单引号):

$updateQuery = "DELETE FROM car WHERE ProNumber = $searchTerm AND ProCode = '$searchTerm1'";