2013-09-21 121 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語句覆蓋數據。 –