-7

関数substr()を使用した後、データベースに値がない(空白)をチェックインすると、値をデータベースに更新できない理由がわかりません。

$result = '000603040000000000GL17KWJ10881011215000000000100';
$invoice = substr($result, 8, 20);  //output 0000000000GL17KWJ108

//update
$sql="UPDATE `order` SET invoice_pbb='$invoice' WHERE order_id=108";
$result=mysql_query($sql);  

if($result){
    echo "Successful";
}       
else {
    echo "ERROR";
}

column = invoice_pbb
type = varchar (100)

*ハードコードで値を変更すると、更新できます(理由はわかりません)。

$invoice = '0000000000GL17KWJ108';

*私はhttpsを使用しています

あなたが私を助けることができればありがとう。

4

2 に答える 2

1

実際、コードに明らかなエラーは表示されませんが、コンテキストがわからないため、この手順でエラーを見つけることができます。

まず、変数$ resultを再利用せず、代わりに新しい変数を使用します。これにより、一部のコードを実行できなかった場合の誤解を避けることができます。

$queryResult = mysql_query($sql);

mysql_query()次に、混合型を返す可能性があるため、結果を正しく確認することをお勧めします。===演算子に注意してください。単純なifステートメントでは、結果を確実に確認することはできません。

if ($queryResult === false)
  echo "ERROR";
else
  echo "Successful";

次に、エラー報告をオンにします。これにより、実際の問題に関するヒントが得られる場合があります。

error_reporting(E_ALL);

$invoiceクエリを実行するために使用する前に、実際に何が含まれているかを確認してください。

var_dump($invoice);

編集:

もう1つの提案ですが、テーブル名として予約語を使用して、テーブルの別の名前を絶対に見つけようとすると、あらゆる種類の問題が発生します。

于 2012-07-06T07:49:44.060 に答える
-1

上記の投稿は正しかったと思います。$ sql = "UPDATE orderSET invoice_pbb='"。$invoice。"'WHEREorder_id = 108";

一重引用符で囲まれた変数名は、文字ごとに読み取られるため、値をレンダリングしないためです。

または、

データベース内のデータ型、長さなどを確認できます

于 2012-07-06T07:25:27.090 に答える