2012-08-07 27 views
-1

我有這樣的代碼不因某種原因MYSQL/PHP慣於更新

$con = mysql_connect("$server", "$user", "$pass"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 
    mysql_select_db('$db', $con); 

// BLOCK 1 
    $supplier=$_POST["supplier"]; 
    $supplierNowBalance =$_POST["supplierNowBalance"]; 
    $supplierBalance=$supplierNowBalance - $supplier; 


    mysql_query("UPDATE inv SET balance='".$supplierBalance."' WHERE username='supplier' AND name='bingo'"); 

    echo $supplierBalance; 

// END OF BLOCK 1 

一切之前和UPDATE語句作品後工作。我將更新語句複製到PHPMyAdmin,它更新得很好!我不明白。由於某種原因,PHP不運行mysql_query

幾個技巧:我在程序中的這塊代碼很少,所以它通過所有的帖子和計算,並更新 我已經嘗試了每種可能的組合爲MySQL查詢(有和沒有的)

############### ANSWER_ _ __ _ __ _ __

感謝您的回答,但我弄清楚了。顯然PHP非常希望在連接字符串周圍有雙引號「」。 第6行,當我descrbed數據庫變量

mysql_select_db('$db', $con); 

我已經單身qoute,我把它改成雙qoute然後砰一聲,它的工作,感謝

mysql_select_db("$db", $con); 
+1

健全檢查:'$水庫=請求mysql_query (「UPDATE inv ....」);如果(!$ res)die(mysql_error());'如果沒有死掉,那麼檢查'mysql_affected_rows($ res);'看看有多少行被更新。如果你有問題,它可能會產生0。順便說一句,你很容易受到SQL注入代碼的方式。在用戶輸入數據上使用'mysql_real_escape_string',並考慮切換到PDO或Mysqli,因爲'mysql_ *'已被棄用。 – drew010 2012-08-07 23:16:36

+1

您可能會失去*雙引號*。 'mysql_select_db($ db,$ con);'工作都一樣。 – 2012-08-07 23:44:31

+0

爲了進一步闡明Majid所說的話,PHP不是*絕望*有雙引號,這是因爲當你使用單引號時,你實際上告訴它使用數據庫「美元符號,字母d,字母b」,它是可能不是數據庫的名稱。 – jprofitt 2012-08-08 00:02:43

回答

2

balancenumeric吧?你不應該用單引號包裝它。

mysql_query("UPDATE inv SET balance= " . $supplierBalance . " WHERE username='supplier' AND name='bingo'"); 

使用PDO使其無懈可擊與SQL INJECTION

<?php 

// other codes 

$stmt = $dbh->prepare("UPDATE inv SET balance = ? WHERE username = ? AND name = ?"); 
$stmt->bindParam(1, $supplierBalance); 
$stmt->bindParam(2, 'supplier'); 
$stmt->bindParam(3, 'bingo'); 

$stmt->execute(); 

// other codes 
?> 
+0

我在我的問題下張貼了答案,雖然它也沒有關係,但我也將它放在了qoutation中,只要它的格式正確,它就可以雙向工作 – 2012-08-07 23:29:31

+0

*不應*,或*不必*。 – 2012-08-07 23:38:52

0

感謝您的回答,但我想通了。顯然PHP非常希望在連接字符串周圍有雙引號「」。 第6行,當我descrbed數據庫變量

mysql_select_db('$db', $con); 

我已經單身qoute,我把它改成雙qoute然後砰一聲,它的工作,感謝

mysql_select_db("$db", $con);