2017-05-26 11 views
-6
<?php 

$connect = mysqli_connect('localhost', 'root', 'samagulf', 'wordpress'); 
$input = filter_input_array(INPUT_POST); 
$country = mysqli_real_escape_string($connect, $input["country"]); 
$city = mysqli_real_escape_string($connect, $input["city"]); 
$for = mysqli_real_escape_string($connect, $input["for"]); 
$title = mysqli_real_escape_string($connect, $input["title"]); 
$details = mysqli_real_escape_string($connect, $input["details"]); 
$price = mysqli_real_escape_string($connect, $input["price"]); 
$email = mysqli_real_escape_string($connect, $input["email"]); 
$phone = mysqli_real_escape_string($connect, $input["phone"]); 
$photo = mysqli_real_escape_string($connect, $input["photo"]); 

if($input["action"] === 'edit') { 

    $query = "UPDATE wp_wpdatatable_1 
     SET country=' " . $country . " ',city=' " . $city . " ',for=' " . $for . " ',title=' 
     " . $title . " ',details=' " . $details . " ',price=' " . $price . " ',email=' 
     " . $email . " 
     ',phone=' " . $phone . " ',photo=' " . $photo . " ' 
     where wdt_ID=' " . $input["wdt_ID"] . " ' "; 

    mysqli_query($connect, $query); 
} 

if($input["action"] === 'delete') { 
    $query = "DELETE FROM wp_wpdatatable_1 
     where wdt_ID=' " . $input["wdt_ID"] . " ' "; 

    mysqli_query($connect, $query); 
} 

echo json_encode($input); 

?> 
+2

あなたはSQLインジェクションのために広くオープンしています。 mysqliを使用しているので、[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[bind_param](http://php.net/ manual/en/mysqli-stmt.bind-param.php)。 – aynber

+5

ここでは何も完璧に動作していません。私が見ることができる問題の1つは、その変更によって修正される予定のステートメントを使用して上記のように、 – Akintunde007

+0

。列名に余分なスペースがあります。 country = '"。$ country。"'、city = '"。$ city。"'。 country = '"。$ country" "、city ='"。$ city ""である必要があります。そして、もちろん、SQLインジェクションを防ぐためにすべてのvarsをエスケープする必要があります。 – Blueline

答えて

0

ここでは、プリペアドステートメントを使用します。これは、引用などの問題を解決します。また、SQLインジェクションを防止します。 N.Bあなたはもはやエスケープする必要はありません。準備されたステートメントを使用する場合は不要です。

$stmt = $connect->prepare("UPDATE wp_wpdatatable_1 SET country=?, city=?, for=?, title=?, details=?, price=?, email=? phone=? photo=? WHERE wdt_ID=?"); 
     $stmt->bind_param('sssssssss', $country, $city, $for, $title, $details, $price, $email, $phone, $photo, $input['wdt_ID']); //bind placeholders to values  

if($stmt->execute() == true){//check for success/failure(returns true/false) 
    echo 'Updated';//it worked 
    } else { 
     echo 'Failed to update: '.$connect->error; //Oops error. 
    } 
+0

返信ありがとうございますが、残念ながら応答はありません。変更はありません。エラーメッセージは表示されませんが、変更はありません。ライブテーブルのデータを使用し、jquery.tableditプラグインを使用して、削除は完璧ですが、エラーを表示せず、dbに何も影響を与えません –

関連する問題