-1

何らかの理由で機能しないこのコードがあります

    $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 ステートメントの前後のすべてが機能します。update ステートメントを PHPMyAdmin にコピーしたところ、問題なく更新されました。理解できません。何らかの理由でphpがmysql_queryを実行していません

いくつかのヒント: プログラムにはこのコード ブロックがほとんどないため、すべての投稿、計算、および更新を通過します。

###############答え_ _ _ _ _ _ __

答えてくれてありがとう、しかし私はそれを理解しました。どうやら PHP は、接続文字列を二重引用符 "" で囲むことを切望しているようです。6行目、データベース変数を記述したとき

mysql_select_db('$db', $con); 

私は単一のqouteを持っていました、私はそれをdouble qouteとbamに変更しました、それはうまくいきました、ありがとう

 mysql_select_db("$db", $con); 
4

2 に答える 2

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
?>
于 2012-08-07T23:17:11.973 に答える
0

答えてくれてありがとう、でも私はそれを理解しました。どうやらPHPは、接続文字列を二重引用符で囲む必要があります。6行目で、データベース変数を記述したとき

mysql_select_db('$db', $con); 

私はシングルqouteを持っていました、私はそれをダブルqouteとbamに変更しました、それはうまくいきました、ありがとう

 mysql_select_db("$db", $con); 
于 2012-08-08T11:29:40.867 に答える