データベースにクエリを実行して、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!";
}
$ _GETと$クエリの最後でGETません。その後、クエリを実行していないので、以下の回答を参照してください –
あなたのスクリプトは[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
文字列リテラルにSQLクエリを配置しても、そのクエリはデータベースに対して実行されません。あなたの 'mysqli_query()'呼び出しはどこですか? – RiggsFolly