错过变量重置

时间:2011-06-26 01:43:11

标签: php sql

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    
                }
        }

1 个答案:

答案 0 :(得分:1)

$id3正在您的代码中使用,就像从mysql_query()返回的变量一样。不是这种情况。相反,它是一个mysql结果资源,您必须从中获取实际结果行。它的价值只是TRUEFALSE

$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