2012-08-07 30 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);