我有这个代码由于某种原因不起作用
$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);
答案 0 :(得分:2)
balance
是numeric
对吗?你不应该用单引号包装它。
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);