if($ row1> 0)在我的情况下是。
当我在数据库中输入内容时,当我尝试再次添加相同的内容时,一切都很顺利javascript报告“sucsessfuly已更新”,当真的没有添加任何内容时,“已经在数据库中”应该在其位置报告但不知何故我不这样做似乎 $ row2 和 $ row3 是问题......我错过了一些可以将它们重置为0值的东西。
if ($row1>0)
{
$id3=mysql_query("SELECT id FROM searchengine WHERE url='$url'");
$runrow2=mysql_query("SELECT * FROM keywords WHERE id='$id3' AND keyword='$search'");
$row2=mysql_num_rows($runrow2);
$runrow3=mysql_query("SELECT * FROM tags WHERE id='$id3' AND tag='$tag'");
$row3=mysql_num_rows($runrow3);
if ($row2==0)
{
mysql_query("INSERT INTO keywords (id,keyword) VALUES ($id3,'$search')");
}
if ($row3==0)
{
mysql_query("INSERT INTO tags (id,tag) VALUES ($id3,'$tag')");
}
if ($row2>0 and $row3>0)
{
?>
<script type="text/javascript">
alert("Already in database.");
history.back();
</script>
<?php
}
if ($row2==0 or $row3==0)
{
?>
<script type="text/javascript">
alert("Successfully updated.");
history.back();
</script>
<?php
}
}
答案 0 :(得分:1)
$id3
正在您的代码中使用,就像从mysql_query()
返回的变量一样。不是这种情况。相反,它是一个mysql结果资源,您必须从中获取实际结果行。它的价值只是TRUE
或FALSE
。
$result = mysql_query("SELECT id FROM searchengine WHERE url='$url'");
// Retrieve the first row from your query result
$row = mysql_fetch_assoc($result);
// Obtain the `id` column from the associative array $row
// Now, $id3 contains the value you need.
$id3 = $row['id'];
// Your following two mysql_num_rows() statements should now work correctly.
$runrow2=mysql_query("SELECT * FROM keywords WHERE id='$id3' AND keyword='$search'");
$row2=mysql_num_rows($runrow2);
$runrow3=mysql_query("SELECT * FROM tags WHERE id='$id3' AND tag='$tag'");
$row3=mysql_num_rows($runrow3);
请参阅mysql_query()
和mysql_fetch_assoc()
有关其他信息,请阅读您的代码所遭受的SQL注入漏洞。有可能破解&amp;篡改您的数据库,因为您没有保护您的查询变量。至少,您必须在用作SQL查询输入的每个PHP变量上调用mysql_real_escape_string()
。 http://en.wikipedia.org/wiki/SQL_injection