为什么我的查询只更新奇数行

时间:2012-05-17 15:33:48

标签: php mysql

我目前正在编写代码,只需在数据库表中一次更新一行。但是,只更新奇数行,而偶数行未更新。

这是我的PHP:

<?php
require_once ("connect.php");
$id = $_GET['id'];
$title = $_POST['title'];
$description = $_POST['description'];

$query = "UPDATE tbl_shows SET shows_title='$title', shows_description='$description' WHERE shows_id='$id'";
$result = mysql_query($query);

 if ($result) {
    header ("Location: shows.php?=success");
    exit ();
} else {
    echo "<p>Still doesn't work</p>";
        exit ();
}
?>

我已经打印了我的$ id,$ title和$ description变量,它们都按照应有的方式显示。

如何更改代码,以便更新偶数和奇数行。

编辑:

回显$ id,$ title,$ description和$ query显示奇数和偶数行的相同内容。

mysql_error()输出的内容:

  

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在附近使用正确的语法(此处显示行中的部分数据并切断错误)第1行的WHE'

查询:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Description is here' WHERE shows_id='2'

2 个答案:

答案 0 :(得分:1)

您的代码有轻松的SQL注入漏洞,这可能会导致您无意中发现错误。例如,如果您的$ description如下所示:

Best movie ever!!! You're going to love it!

...然后您的连锁查询将如下所示:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Best movie ever!!! You're going to love it!' WHERE shows_id='2'

问题是you're中的撇号会导致show_description的值终止,其余的查询也没有意义再到SQL了。

至少,使用mysql_real_escape_string()来清理你添加到查询中的变量,更好的是,使用php的PDO库

答案 1 :(得分:0)

可能导致偶数项目无法从您发布的内容进行更新的情况并不是很明显。我建议您使用mysql_error函数显示$ result为false时的确切错误消息。根据PHP文档,mysql_result只在错误时返回false,这是一个很好的迹象,表明奇怪的东西可能会出现。