php
  • sql
  • 2013-01-31 62 views -1 likes 
    -1

    需要幫助,過去幾天一直在努力解決這個問題的任何建議如何糾正這個腳本?在sql中使用php更新命令

    <?php 
    include("../includes/db.php"); 
    
    $serial = intval($_GET['code']); 
    
    $result = "UPDATE table_name SET name = ('".$_POST["name"]."') WHERE serial = '".mysql_real_escape_string($serial)."'"; 
    $row = mysql_query($result); 
    
    if($row) 
    { 
        echo "Save completed."; 
    } 
    else 
    { 
        echo "Error [".$row."]"; 
    } 
    ?> 
    

    您的專業知識非常感謝。

    謝謝

    +0

    define「correct this script」 –

    +0

    另外,你有沒有考慮過發佈這個到http://codereview.stackexchange.com而不是? –

    +0

    正確的是什麼? – itachi

    回答

    0

    這是正確的方法,假設你不使用任何框架。

    請看: http://www.w3schools.com/php/php_mysql_update.asp

    如果你不控制其他地方的數據庫連接,你應該有關閉它。

    +0

    我不會推薦[W3Schools] (http://w3fools.com/) – SeanWM

    +0

    爲什麼不呢? @Sean? – Guerra

    +0

    @Guerra:檢查http://w3fools.com/ –

    0

    失去了括號

    $result = "UPDATE table_name SET name = '".$_POST["name"]."' WHERE serial = '".mysql_real_escape_string($serial)."'"; 
    
    1

    添加htmlspecialchars()一些更多的安全性,並把它在這樣一個變量:

    $name = htmlspecialchars(mysql_real_escape_string($_POST['name']), ENT_QUOTES); 
    $serial = htmlspecialchars(mysql_real_escape_string($serial), ENT_QUOTES); 
    $result = "UPDATE table_name SET name = '$name' WHERE serial = '$serial'"; 
    

    哦,你不需要打開和關閉$的結果,因爲它使用雙引號,只是把變量放在單引號之間。

    我覺得你真的應該考慮使用PDO或MySQLi的,他們的方法更安全,更快,這裏有一些例子:‘$ _ POST [’

    PDO: 
    
        $pdo->prepare('SELECT * FROM users WHERE username = :username'); 
        $pdo->execute(array(':username' => $_GET['username'])); 
    
    MySQLi: 
    
        $query = $mysqli->prepare('SELECT * FROM users WHERE username = s'); 
        $query->bind_param('s', $_GET['username']); 
    
    0

    的()從('名稱中刪除「]。」')也使用mysql_error()代替$ row中的

    echo「Error [」。$ row。「]」;

    相關問題