2013-09-21 94 views
0

我设法解决我的旧错误,所以我要用新错误更新这个帖子。基本上我必须手动添加一个phpmyadmin中的结构与我的用户ID,以便使用此代码进行更新。因为我将它设置为更新任何与用户标识相同的列。随机SQL更新问题

任何想法我可以做不同的做法,所以有一些sorta默认自动?我尝试了这样做,所以当你注册它会做到这一点,并且运作良好,但我将有多达10个不同的主题,所以我如何以更有效的方式做到这一点?

<?php 
include 'connect.php'; 
include 'main.php'; 
$id = $_SESSION['id']; 
$result3 = mysql_query("SELECT * FROM html WHERE id='$id'") or die("MYSQL Query Failed : " .mysql_error()); 
while($row3 = mysql_fetch_array($result3)) 
{ 
$lastpage=$row3['lastpage']; 
} 
$page = "page1.php"; 
$sql = "UPDATE html SET id='$id', lastpage='$page' WHERE id='$id'"; 
mysql_query($sql) or die("MYSQL Query Failed : " . mysql_error()); 
echo $lastpage; 
?> 

另一件事我想搞清楚的是,如果我可以把它检查数据库的价值下的“尾”和我一样,但然后检查它是否等于2页及以上的也不会更新值。基本上它只会更新值,如果这是你第一次去你的帐户页面。得到它?

任何人有任何想法?

您认为这样会有效吗?

<?php 
include 'connect.php'; 
include 'main.php'; 
$id = $_SESSION['id']; 
$result3 = mysql_query("SELECT * FROM html WHERE id='$id'") or die("MYSQL Query Failed : " . mysql_error()); 
while($row3 = mysql_fetch_array($result3)) 
{ 
$lastpage=$row3['lastpage']; 
} 
$page = "page1.php"; 
if(empty($lastpage)){ 
mysql_query("INSERT INTO `html`.`html` (`id`, `lastpage` VALUES ($id, $page"); 
} else { 
$sql = "UPDATE html SET id='$id', lastpage='$page' WHERE id='$id'"; 
mysql_query($sql) or die("MYSQL Query Failed : " . mysql_error()); 
} 
echo $lastpage; 
?> 
+1

**通过建立与外部变量的SQL语句,你离开自己敞开SQL注入式攻击。**另外,任何输入带有单引号的数据,如“O'Malley”的名称,将炸毁您的SQL查询。请了解使用参数化查询(最好是使用PDO模块)来保护您的Web应用程序。 http://bobby-tables.com/php有例子让你开始,并且[这个问题](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php)有很多例子的细节。 –

+0

我只是试着去尝试并使之成功。我只想知道我做了什么,这是不正确的工作。虽然我会阅读,因为我需要了解更多。你认为你可以向我展示一个正在工作的更安全版本的代码示例吗? –

+1

你不会说错误是什么,或者什么“不能正常工作”的意思。 –

回答

0

做这种方式,你会没事的

<?php 
    include 'connect.php'; 
    include 'main.php'; 
    $id = $_SESSION['id']; 
    $page = "page1.php"; 

    $sql_chk = " select * from html where id = '$id' and lastpage = '$page' "; 
    $rs_chk = mysql_query($sql_chk); 
    $num_chk = mysql_num_rows($rs_chk); 

    if ($num_chk == 0) { 
     mysql_query("INSERT INTO `html` (`id`, `lastpage`) VALUES ('$id', '$page') "); 
    } else { 
     $sql = "UPDATE html SET lastpage='$page' WHERE id='$id' "; 
     mysql_query($sql) or die("MYSQL Query Failed : " . mysql_error()); 
    } 
    ?> 
+0

谢谢这么多asarfraz!这很好用! –

+0

你知道我是如何做到这一点,所以它检查数据库中的值,如果它等于page2.php或更高,它将不会更新任何数据。有任何想法吗? –

+0

顺便说一下,如果脚本中已经有数据,它不会覆盖数据。任何想法如何使它能够覆盖数据,并且不会使用if语句覆盖数据。 –