MYSQL / PHP不会更新

时间:2012-08-07 23:12:53

标签: php mysql

我有这个代码由于某种原因不起作用

    $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行,当我描述数据库变量

mysql_select_db('$db', $con); 

我有单qoute,我改为双qoute和bam,它工作,谢谢

 mysql_select_db("$db", $con); 

2 个答案:

答案 0 :(得分: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
?>

答案 1 :(得分:0)

感谢您的回答但我明白了。显然PHP非常渴望在连接字符串周围加上双引号“”。 在第6行,当我描述数据库变量

mysql_select_db('$db', $con); 

我有单qoute,我改为双qoute和bam,它工作,谢谢

 mysql_select_db("$db", $con);