我有两个查询,但我可以将它们作为一个
$sql = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$sql = ("UPDATE table SET views = views+1 where title='$title' ");
$query = mysql_query($sql) or die("Error Connecting To db");
目前第二个工作但不是第一个。
答案 0 :(得分:2)
这是你的代码:
$sql = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$sql = ("UPDATE table SET views = views+1 where title='$title' ");
$query = mysql_query($sql) or die("Error Connecting To db");
首先,第一个$sql
将无法运行,因为您在下一行中使用新内容覆盖了第一个$sql
的内容。
然后只看你的逻辑,这是你的第一个问题:
SELECT * FROM table WHERE title='$title' LIMIT 1
我认为这是为了获得title
等于$title
而不是其他的条目,对吧?但接下来你的下一个问题是:
UPDATE table SET views = views+1 where title='$title'
无论如何,您正在更新title='$title'
的值。所以甚至不需要第一个查询。所以问题解决了吧?那么您可能希望将LIMIT 1
添加到第二个查询中,如下所示:
UPDATE table SET views = views+1 where title='$title' LIMIT 1
但老实说,根据项目title
是否匹配更新数据库的逻辑似乎很混乱。如果两个项目的标题相同怎么办?是的,你是按1
限制事物,但按什么标准限制?如果您有三个具有相同标题的项目,这些项目会更新吗?
您的应用结构需要更多区别。但我认为这对于什么本质上是一个新手问题是公平的。
答案 1 :(得分:0)
分别运行两个查询
$sql1 = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$qry = mysql_query($sql1);
if (mysql_num_rows($qry) > 0)
{
while ($res = mysql_fetch_object($qry))
{
// -- contents --
}
$sql = ("UPDATE table SET views = views+1 where title='$title' ");
$query = mysql_query($sql) or die("Error Connecting To db");
}