2016-08-17 16 views
0

私のクエリの更新が自分のデータベース内のデータを更新できない理由を誰にでも理解させることができます。PHP MySQLアップデートクエリ配列(0){}

この私のコードのPHP:任意の助け

<?php 

$code = $_GET['code']; 
$n1= $_GET['n1']; 
$n2= $_GET['n2']; 
$n3 = $_GET['n3']; 

try { 
    $connexion= new PDO('mysql:host=localhost;dbname=data','mydata','password'); 
    $sql_update = "UPDATE data.check SET numb_1='".$n1."',numb_2='".$n2."','numb_3'='".n3."' WHERE 'code_product' =".$code; 
    $query = $connexion-> prepare($sql_update); 
    $query -> execute(); 
    $data_update= $query -> fetchAll(PDO::FETCH_ASSOC); 
} 

catch(PDOException $e) 
{ 
echo "<br>" . $e->getMessage(); 
} 

感謝。

+2

ので 'update'クエリはデータを返しません。 – Phylogenesis

+0

あなたはupdate.youを使用しているすべてのデータを返すために使用する必要があります –

+0

また、私は '...&code = 0%20or%201 = 1'をGETリクエストで送信するとどうなるか考えてみてください。このコードは[SQLインジェクション](https://en.wikipedia.org/wiki/SQL_injection)に対して広く公開されています。 – Phylogenesis

答えて

2

1)変更

$sql_update = "UPDATE data.check SET numb_1='" . $n1 . "',numb_2='" . $n2 . "','numb_3'='" . n3 . "' WHERE 'code_product' =" . $code; 

$sql_update = "UPDATE data.check SET numb_1='" . $n1 . "',numb_2='" . $n2 . "','numb_3'='" . $n3 . "' WHERE `code_product` =" . $code; 

=>n3

に、同様の結果をフェッチするために再度照会する必要があなた追加するのを忘れた $。また、単一引用符をバックティックに置き換えて列名を囲みます。

更新されたコード

<?php 

$code = $_GET['code']; 
$n1 = $_GET['n1']; 
$n2 = $_GET['n2']; 
$n3 = $_GET['n3']; 

try { 

    $connexion = new PDO('mysql:host=localhost;dbname=data', 'mydata', 'password'); 

    $sql_update = $connexion->prepare("UPDATE `data`.`check` SET numb_1 = :numb_1 , numb_2 = :numb_2, numb_3 = :numb_3 WHERE `code_product` = :code_product"); 
    $sql_update->execute(array(':numb_1' => $n1,':numb_2'=>$n2, ':numb_3'=>$n3,':code_product'=>$code)); 


    $stmt = $connexion->prepare("SELECT * FROM `data`.`check` WHERE code_product=:code_product"); 
    $stmt->execute(array(':code_product'=>$code)); 
    $data_update= $stmt -> fetchAll(PDO::FETCH_ASSOC); 

} catch (PDOException $e) { 
    echo "<br>" . $e->getMessage(); 
} 
?> 
+0

なぜあなたはmysqliとpdoを持っていますか? – Ivan

+0

私の悪い@Ivan。指摘ありがとうございます。 –

+0

問題がありますPDOがバインドされていないパラメータで例外をスローしない – zouzou

1

はあなたupdate処理を実行した後で、

$sql_update = "UPDATE data.check SET numb_1='".$n1."',numb_2='".$n2."','numb_3'='".$n3."' WHERE 'code_product' =".$code; 
$query = $connexion-> prepare($sql_update); 
$query -> execute(); 

$query = $dbh->prepare("SELECT * FROM data.check"); 
$query->execute(); 
$data_update= $query -> fetchAll(PDO::FETCH_ASSOC);// now it will get records 
+0

なぜ2つのステートメント(UPDATEとSELECT)を持つクエリが1つだけではないのですか? – Ivan

+0

あなたの答えをありがとうが、それは働かない。 – zouzou