0

我想建立一个删除页面,用于从我的数据库中删除一些数据。

当我将 id 放入其中时,它可以正常工作,但我希望它从 url 中提取 id

www.example.com/delete.php?id=1234

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'DELETE FROM MYTABLE
        WHERE created=<?php echo $_GET["id"]; ?>';

mysql_select_db('ely');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not delete data: ' . mysql_error());
}
echo "Deleted data successfully\n";
mysql_close($conn);
?>

我有问题的部分是这部分

 WHERE created=<?php echo $_GET["id"]; ?>';

我得到的错误是“无法删除数据:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '=' 附近使用正确的语法”

4

5 回答 5

0
$sql="DELETE FROM MYTABLE WHERE created='".$_GET['id']."'";
于 2013-08-16T09:07:11.823 回答
0

要将变量连接成字符串,请使用连接运算符

但是由于几个原因,您的代码不好。

1:清理您的输入

xkcd

2:不要对任何可以改变服务器状态的东西使用GET,而是使用POST。

这是一个故事,解释了一个原因

于 2013-08-16T09:01:00.677 回答
0

学习引用!

  $sql = 'DELETE FROM MYTABLE
       WHERE created=<?php echo $_GET["id"]; ?>';

  $sql = 'Delete from MYTABLE WHERE created="'.$_GET['id'].'"';

接下来是google for sql-injections,请记住,如果 $_GET['id'] 及时设置,您应该证明

于 2013-08-16T08:59:50.993 回答
0

尝试这个:

$id = $_GET['id'];
$sql = 'DELETE FROM MYTABLE
        WHERE created=' .$id;

“。” 用于连接变量 $id 的值

至于连接到数据库,我建议您查找PDO

于 2013-08-16T09:02:06.543 回答
0
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$id = mysql_real_escape_string($_GET['id']);
$sql = "DELETE FROM MYTABLE
        WHERE created='$id'";

mysql_select_db('ely');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not delete data: ' . mysql_error());
}
echo "Deleted data successfully\n";
mysql_close($conn);
?>
于 2013-08-16T08:58:20.463 回答