2017-11-16 14 views
1

テーブルがフォームに接続されています。私は特定の行のデータを編集しようとしていますので、行はUpdateです。更新テーブルを使用してPHPでテーブルを更新できませんでした。

の表は、これらの列で構成されています:ID キー、EnteredBy、INI

$user = 'root'; 
$pass = ''; 
$db = 'cl_db'; 
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened."); 

$rowID = $conn->real_escape_string($_POST['ID']); 
$enteredBy = $conn->real_escape_string($_POST['enteredBy']); 
$ini = $conn->real_escape_string($_POST['ini']); 

$query = "UPDATE buildtracker SET 
      EnteredBy = '$enteredBy', INI = '$ini' 
      WHERE ID = '$rowID' "; 

$success = $conn->query($query); //insertion above^is the column names 

if (!$success) { 
    die("Couldn't enter data: ".$conn->error); 
    } 
return $query; 

私はテーブルの上に新しいデータや更新を受信しませんよ。これを改善するために私はどうしたら別のことができますか?

ありがとうございます!

+0

あなたの 'TABLE'は*切り捨てられますか? – AymDev

+1

'$ success'は真実か偽ですか? – Adder

+0

あなたの接続変数 '$ conn'の宣言も表示します – coderodour

答えて

1

あなたのアプリケーションでこのコードがどのようなコンテキストであるかわかりません。

しかし、SQLインジェクション攻撃から保護するためにプリペアドステートメントを使用することをお勧めします。特に、$ _POSTからの直接データが使用されます(サニタイズ可能です)。

プリペアドステートメントでクエリが実行されているかどうかを確認するには、$stmt->execute()を使用します。

$user = 'root'; 
$pass = ''; 
$db = 'cl_db'; 
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened."); 
$prepare_query = "UPDATE buildtracker SET EnteredBy=?, INI=? WHERE ID=?"; 
$success = $conn->query($prepare_query); //insertion above^is the column names 
if ($stmt = $conn->prepare($query)) { 

    // Possible data sanitation can be done below 
    $rowID = ($_POST['ID']); 
    $enteredBy = ($_POST['enteredBy']); 
    $ini = ($_POST['ini']); 

    // bind parameters 
    $stmt->bind_param('ssi', $enteredBy, $ini, $rowID); 

    // CHECKING is here: execute query (or die) 
    // Can check also for ($stmt->affected_rows > 0) 
    if (!$stmt->execute()){ 
     die("Couldn't enter data: ".$conn->error); 
    } 

    return $query; 
} 

そしてPDO代わりのMySQLiを使用して、おそらくより良い推奨されるでしょう。

0

私が作成したすべてのエラーとして、これは私の$rowIDが正しいhtml要素を指していないという宣言の結果でした。

$rowID = $conn->real_escape_string($_POST['rowID']); //rowID is the DOM element name 

作業

$rowID = $conn->real_escape_string($_POST['ID']); // ID is the COLUMN NAME 

は、あなたのコメントと回答をいただき、ありがとうございます。

Hossamのより安全な注入予防の実装を検討する予定です。私はあなたに感謝しています:)

関連する問題