1

我在更新和将数据插入数据库时​​遇到问题。我已经调试了大部分程序,所以我确定问题出在用于更新的代码行和用于插入数据的代码行。我很困惑,因为它们是使用相同代码的其他函数,并且我在每个函数中使用的所有变量都是在函数中本地声明的,所以我知道它们没有冲突。顶部的代码是打开与数据库和php的通信线路的所有数据库代码。该代码有效,我已经在其他程序中对其进行了测试。我仍然可以使用 SELECT 代码从数据库中提取数据,并且我已经检查并仔细检查了名称是否与表匹配。此代码是一些 ajax 代码的一部分,因此它会实时更新,但我使用 javascript 的帖子将数据很好地传输到 php 文件。所以我不知道我做错了什么,或者服务器是否有问题。如果有人有任何想法,请告诉我。此外,此代码的目的是让用户可以喜欢、收藏并给他们在我的网站上查看的内容打 5 星评分。

这是代码:

<?php include "base.php";?>
</head>
<?php
$rateMe = mysql_query("SELECT * FROM rating WHERE Username = '".$_SESSION['Username']."' AND Title = '".$_POST['myTitle']."'");
if(mysql_num_rows($rateMe) == 0)
{
    $registerquery = mysql_query("INSERT INTO rating (Username, Author, Star, Like, Favorite, Title) VALUES('".$_SESSION['Username']."','".$_POST['myAuthor']."','".$_POST['myrating']."','".$_POST['myLike']."', '".$_POST['myFavorite']."', '".$_POST['myTitle']."')");
}else
{
    $makeUpdate = mysql_query("UPDATE rating SET Star = '".$_POST['myrating']."' WHERE Username = '".$_SESSION['Username']."' AND Title = '".$_POST['myTitle']."'");
}
?>

这是我要插入数据的表

表:评级

用户名 varchar(255)

作者 varchar(255)

星浮

像 varchar(255)

最喜欢的 varchar(255)

标题 varchar(255)

4

2 回答 2

1

这是您的插入查询在打印时可能的样子

INSERT INTO rating (Username, Author, Star, Like, Favorite, Title) VALUES('John','Jim','xx','xx', 'xx', 'xx')

insert 语句中的like关键字可能会抛出如下错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法以使用接近 'like) 值('John'

检查您的更新是否有效

于 2012-07-30T22:43:12.313 回答
0

正如 Markus 所暗示的,您的代码极易受到 SQL 注入攻击。此外,PHP 手册强烈建议使用mysqli扩展,而不是 mysql 扩展。

我建议您花点时间阅读这篇关于 PDO、准备好的语句以及将数据插入/更新到模型中的正确方法的文章。

于 2012-07-30T22:51:22.450 回答