2012-01-01 19 views
-1

PHPとMySQLプロジェクトに問題があります。私はデータベースに複数の桁の値を挿入したかったのですが、真実は、すでにコードによって混乱しています。あなたが見てみたいならば、それはこのようなものだ:PHPを使用してテキストボックスからMySQLデータベースに多値を挿入する

 

    if(!empty($_POST['brando'])){ 
     $A="brand = '$brando'";} 
     else{ 
     $A=" ";}  

    if(!empty($_POST['prnameo'])){ 
     $B="product_name = '$prnameo'";} 
     else{ 
     $B=" ";}  

    if(!empty($_POST['prido'])){ 
     $C="product_id = '$prido'";} 
     else{ 
     $C=" ";}  

    if(!empty($_POST['prcolo'])){ 
     $D="color = '$prcolo'";}  
     else{ 
     $D=" ";}  

    if(!empty($_POST['priceo'])){ 
     $E="price = '$priceo'";} 
     else{ 
     $E=" ";}  



     $sqlq="UPDATE $tbl_name2 SET $A $B $C $D $E where id='$id'"; 


     mysql_query($sqlq); 

私はデータベースに多値コマンドを照会するなどのコンマが必要であることに気づい:

mysql_query("UPDATE $tablename SET collumn1='value', collum2='value' where id='value'");

と今私は、任意のカンマか」を入れカント、 "これらのコードのいずれかで、PHPページが他の変数値をサーバに送信できなくなってしまいます。

私はこれまで、コード変更した場合でも:

$sqlq="UPDATE $tbl_name2 SET $A , $B , $C , $D , $E where id='$id'";

を、それがどのような他の生産が、エラーをいまいましいます。

私はあなたが何を話しているのか知っていれば助けを求めます。私はコーディングによって強調されているように思えます。

おっと、このコードも、私はこれらのためにそれを置くことを忘れました。

 

    for ($help_given=1, $help_given++) 
    { 
    echo "Thanks"; 
    } 

+3

FYI:あなたのスクリプトはSQLインジェクションを受けやすいです。 – TimWolla

+0

'echo $ sqlq'はあなたに何を与えるのですか? – jprofitt

+0

@TimWolla SQLインジェクションは、私が無視しているものです。これは最終的に私の最終的なプロジェクトを完了させるもので、ローカルホスト上で実行されるからです。私はPHPと物事で私の新しい私を知っているが、SQLの注射は私の焦点では​​ありません。 – Rfqkml

答えて

2

(内破するようにしてください)このような配列を持つ ""、:

<?php 
if(!empty($_POST['brando'])){ 
    $value[] ="brand = '$brando'"; 
} 

if(!empty($_POST['prnameo'])){ 
    $value[] ="product_name = '$prnameo'"; 
} 

if(!empty($_POST['prido'])){ 
    $value[] ="product_id = '$prido'"; 
} 

if(!empty($_POST['prcolo'])){ 
    $value[] ="color = '$prcolo'"; 
} 

if(!empty($_POST['priceo'])){ 
    $value[] ="price = '$priceo'"; 
} 

$sqlq="UPDATE $tbl_name2 SET " . implode(",",$value)." where id='$id'"; 
mysql_query($sqlq); 
?> 

次に、 "mysql_escape_string"または "PDO :: prepare"メソッドを使用してSQLインジェクションを防止する方がよいでしょう。

+0

これは真実を伝えるのに有望ですが、 "mysql_escape_string" "implode"や "prepare"などのPHPメソッドはわかりません。私はそれを試してみましょう、結果が良いかそうでなければ、私はあなたに通知します。ありがとう、たくさん。 – Rfqkml

+0

私はこれを投票することができればいいと思うが、十分な評判はない。それでも、あなたはそれを解決しました。私は十分にあなたに感謝できませんでしたが、まだ、私はそれを感謝します。どうもありがとう。 – Rfqkml

+0

私の喜びです。 @Rfqkmlこのセクションの冒頭で** unset/empty ** $ value []を思い出させてください。そうしないと、予期せぬ結果が出る可能性があります:P – TopCaver

1
if(isset($_POST['brando'])) 
    { 
     $brando=mysql_escape_string($_POST['brando']); 
     $A="brand = ".$brando; 
    } 
    else 
    { 
     $A=" "; 
    } 


    if(isset($_POST['prnameo'])) 
    { 
     $prnameo=mysql_escape_string($_POST['prnameo']); 
     $B="product_name = ".$prnameo; 
    } 
    else 
    { 
     $B=" "; 
    } 

    if(isset($_POST['prido'])) 
    { 
     $prido=mysql_escape_string($_POST['prido']); 
     $C="product_id = ".$prido; 
    } 
    else 
    { 
     $C=" "; 
    } 

    if(isset($_POST['prcolo'])) 
    { 
     $prcolo=mysql_escape_string($_POST['prcolo']); 
     $D="color= ".$prcolo; 
    } 
    else 
    { 
     $D=" "; 
    } 

    if(isset($_POST['priceo'])) 
    { 
     $priceo=mysql_escape_string($_POST['priceo']); 
     $E="price = ".$brando; 
    } 
    else 
    { 
     $E=" "; 
    } 

    $tbl_name="mytable";//to set 
    $id='primary_key';//to set 

    $sqlq="UPDATE $tbl_name SET $A, $B, $C, $D, $E where id='$id'"; 

    mysql_query($sqlq); 

だけ//を設定すると、私はコメントしている値を入れて...

+0

mysql_excape_stringの機能は何ですか? 「エスケープされた文字列を返します」、「この関数がデータをエスケープするために使用されない場合、クエリはSQLインジェクション攻撃に対して脆弱です」という説明を読んでください。 – Rfqkml

+0

オハイオ州オハイオ州オクラホマしかし、どこにコンマを置くべきですか? 私はここでは、意味: $ A = "ブランド= '$のブランド'、";}ここで または: $ sqlq = "UPDATEする$ tbl_name2セットする$ A、$ B、$ C、$ D、$ Eここでid = '$ id' "; 効果的に実行されるかどうかわからないためです。 – Rfqkml

+1

あなたはSQLインジェクションハッキングから安全です。 –

関連する問題