2017-10-28 3 views
0

データベースにクエリを実行して、Web UIから行(およびその中のデータ)を更新しようとしています。 私はテーブル "customer"を持っています - 単にあまりにもレコードを更新したい(私は既にINSERTとDELETEを達成しました)。私はテーブルをエコーし​​、この構文によって更新するオプションを含めていますPHP内でのSQLの更新

<td><a href =Scripts/Update.php?id=".$row['Customer_ID'].">Update</a> </td>"; 

これは、私は必要なだけのようにすべての行の末尾に「更新」を示しており、私はそれをクリックしたときに、それが実行されます更新スクリプト。すばらしいです。

テーブルをエコーし​​ながら、入力タイプをテキストに変更しました。ユーザーがそこをクリックしてデータを編集し、更新ボタンをクリックすることができます。

ただし、テーブル内のレコードを更新しようとすると、選択したヘッダーページに更新されますが、情報は更新されず、クリアされたデータセルの行が返されます。 (顧客IDをテーブルに表示してもそれはまだそこにあるので、データベースからその行は削除されませんでした)。次のように

私のupdate.phpをスクリプトは次のとおりです。

 <?php 
    include "../Connection.php"; 

    $Firstname = mysqli_real_escape_string($con, $_POST['FirstName']); 
    $Lastname = mysqli_real_escape_string($con, $_POST['LastName']); 
    $CusEmail = mysqli_real_escape_string($con, $_POST['Email']); 
    $CusUsername = mysqli_real_escape_string($con, $_POST['Username']); 
    $CusPhone = mysqli_real_escape_string($con, $_POST['Phone']); 
    $CusCountry = mysqli_real_escape_string($con, $_POST['Country']); 
    $CusTown = mysqli_real_escape_string($con, $_POST['Town']); 
    $CusAddress = mysqli_real_escape_string($con, $_POST['Address']); 
    $CusPostcode = mysqli_real_escape_string($con, $_POST['Postcode']); 

      $sqlupdate = "UPDATE customer SET Customer_FirstName = '$Firstname', Customer_LName ='$Lastname', Customer_Email ='$CusEmail', Customer_Username ='$CusUsername', Customer_Phone ='$CusPhone', Customer_Country ='$CusCountry', Customer_Town ='$CusTown', Customer_Address = '$CusAddress', Customer_Postcode = '$CusPostcode' WHERE Customer_ID ='$GET_[id]'"; 

mysqli_query($con, $sqlupdate); 
mysqli_close($con); 

    if($sqlupdate){ 
     header('Location:../CustomerRecords.php'); 
     } 
     else{ 
      echo "Failed!"; 
      } 

私は例えば、私は通常のメソッドPOSTで、HTMLフォームからこれを行うには、試してみましたがいくつかありますが、この方法のに対し、Iエコーからそれをやっているhref ...(これは私の初めてのことです)。私はDELETE関数でこの同じメソッドを使用して、それは素晴らしい動作します。

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

そして

if(isset($_POST)){ 

必要

が、やはり、これを試してみましたが、同じ結果を得る: は、私は通常追加し、その上から従ってください。

私のSQL構文が間違っているかもしれませんが、誰かがそれが偉大であると助言できるなら、私はそれを理解できません。

ありがとうございます。

UPDATE:

私は今、ちょうど今それを「演奏」しながら、私はこのコードAを見つめてきたが、上記のいくつかの変更を行ってきた...私はこれをも試してみましたが、それはエラーをスローし、その

 $sqlupdate = "UPDATE customer SET Customer_FirstName = '$Firstname', Customer_LName ='$Lastname', Customer_Email ='$CusEmail', Customer_Username ='$CusUsername', Customer_Phone ='$CusPhone', Customer_Country ='$CusCountry', Customer_Town ='$CusTown', Customer_Address = '$CusAddress', Customer_Postcode = '$CusPostcode' WHERE Customer_ID ='$_GET[id]'"; 


    if(mysqli_query($con, $sqlupdate)){ 
     header('Location:../CustomerRecords.php'); 
     } 
     else{ 
      echo "Failed!"; 
      } 
+1

$ _GETと$クエリの最後でGETません。その後、クエリを実行していないので、以下の回答を参照してください –

+0

あなたのスクリプトは[SQL Injection Attack]の危険にさらされています(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in -php) [あなたが入力をエスケープしている場合でも、安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) 使用[準備パラメータ化ステートメント](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

+0

文字列リテラルにSQLクエリを配置しても、そのクエリはデータベースに対して実行されません。あなたの 'mysqli_query()'呼び出しはどこですか? – RiggsFolly

答えて

0

あなたは実際にクエリを実行していません。後:

$sqlupdate = "UPDATE customer SET Customer_FirstName = '$Firstname', Customer_LName ='$Lastname', Customer_Email ='$CusEmail', Customer_Username ='$CusUsername', Customer_Phone ='$CusPhone', Customer_Country ='$CusCountry', Customer_Town ='$CusTown', Customer_Address = '$CusAddress', Customer_Postcode = '$CusPostcode' WHERE Customer_ID ='$GET[id]'"; 

あなたは追加する必要があります。

mysqli_query($con,$sqlupdate); 
+0

Hey Chris-上記で編集しました。どういう意味ですか?ありがとう。 – Tipping44