2016-04-24 28 views
0

フォームを使用してデータベースを更新しようとすると、問題が発生します。MYSQLとPHPデータベースの更新データベースが更新されない

私の問題は、何も起こらないアップデートをクリックしたときです。データベースは更新されません。

別の問題は、フォームとSQLクエリでPOSTを使用する場合です。編集ページに情報が表示されず、空白です。

これは読みにくいなど申し訳ありませんが、初めての投稿です。また、私はGET/POSTクエリにセキュリティ上の欠陥があることを知っています。準備されたステートメントを使用し始める前に、あるいは呼び出されたものを使用し始めるだけです。

FYI、クエリをエコーし​​てif/elseステートメントを定義すると、動作しないことがわかりますが、理由はわかりません。私はこれに3日を費やし、インターネット上で見つかった例を使ってコードを何度も変更しています。

のindex.php

<?php 

$servername = "localhost"; 
$username = "***"; 
$password = "****"; 
$dbname = "****"; 

$link = new mysqli("$servername", "$username", "$password", "$dbname"); 

if ($link->connect_error) { 
    die("Connection failed: " . $link->connect_error); 
} 
echo "Connected successfully"; 


mysqli_select_db($link,"jamesrph_myphp"); 


$sql = "SELECT * FROM article"; 

$result = mysqli_query($link,$sql); 

$id = 'id'; 
$title = 'title'; 


?> 
<html> 
<head> 

<link rel="stylesheet" type="text/css" href="style.css"/> 
<title>PHP </title> 

</head> 

<body> 

<h1> My title </h1> 

<table> 

<tr> 
<?php 
while($row=mysqli_fetch_array($result)){ 

?> 
<td><?php echo $row["title"]; ?> </td> 

<td><a href="article_detail.php?id=<?php echo $row["id"]; ?>">Read More</a></td> 

<td><a href="edit.php?id=<?php echo $row["id"]; ?>">Edit</a></td> 

</tr> 
<?php 
} 
?> 
</table>  
</body> 
</html> 

个人设定

<?php 

$link = mysqli_connect("localhost","******","******", "*****"); 

$query = "SELECT * FROM article WHERE id=".mysqli_real_escape_string($link, $_GET['id'])." LIMIT 1"; 

$result = mysqli_query($link,$query); 

$row = mysqli_fetch_array($result); 


$title = $row['title']; 

$content = $row['content']; 

?> 

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="style.css"/> 
</head> 
<body>  


<p> Edit Article </p> 

<form method="get" action="processarticle.php"> 

<input type="hidden" name="id" value="<?php echo $row["id"]; ?>" /> 

<input id="titlearea" type="text" name="title" value="<?php echo $row["title"]; ?>"/>  

<textarea id="contentarea" name="content" rows="10" cols="40"><?php echo $row["content"];?></textarea>  

<input type="submit" name="submit" id="update_article"/> 

</form> 
</body> 

</html> 

processarticle.php

<<?php 
//Database Connection 
include 'connection.php'; 
//Get ID from Database 
if(isset($_GET['edit_id'])){ 
$sql = "SELECT * FROM article WHERE id =" .$_GET['edit_id']; 
$result = mysqli_query($link, $sql); 
$row = mysqli_fetch_array($result); 
    } 
//Update Information 
if(isset($_POST['btn-update'])){ 
$title = $_POST['title']; 
$content = $_POST['content']; 
$id = $_POST['id']; 
$update = "UPDATE article SET title=?, content=? WHERE id=?"; 
$up = mysqli_query($link, $update); 

if($stmt = $mysqli->prepare($update)){ 
    $stmt->bind_param("ssi" ,$title ,$content ,$id); 
    $stmt->excute(); 
} 
header("location: disp.php"); 
} 
?> 
+0

を冷却http://www.w3schools.com/bootstrap/default.aspを試してみてください(と文字列を連結する。)連結を使用してみてくださいUPDATEクエリで$タイトルと$コンテンツaswellについて。 –

+0

申し訳ありませんが私のリンクに意味ですか? –

+0

セキュリティ上の欠陥を修正し、**修正**することに何の価値もありません。いずれにせよ、準備されたステートメントを使用して修正する必要があります。安全でないコードを作成する方法を学び、それを後で保護する方法を学ぶのではなく、時間を節約し、最初に安全な方法を学ぶのはなぜですか? –

答えて

0

あなたのedit.phpフォームにはGETメソッドがありますが、あなたはprocessarticle.phpでPOST変数を使用していますが、そこにGET変数があります。

ちょうどあなたがしたい場合は、フォームにのみ、あなたの形式で指定されたURLをGETまたはPOST

いずれか一つのことは、フォームメソッドそう

に基づいていずれかのアクセスGETやPOST変数ますかことができると言うことができますあなたの記事は、フォームが最初

$update = "UPDATE article SET title='$title', content='$content' WHERE id=". $_POST['id']; 

は、より多くの私はこれでより多くのを見ても、IDを見て=これは、$ POST [「ID」]フォームで隠しフィールドでなければなりませんそれが隠されていないことができますオフに基づいて更新しますこれは3部のミニシリーズ

あなたのプロセス上で確認してください。スターターのためのPHP私はhttp://php.net/manual/en/mysqli.prepare.php

process.php 

//Update Information 
if(isset($_POST['Update_Article'])){ 
$title = $_POST['title']; 
$content = $_POST['content']; 
$id = $_POST['id']; 

$SQL = "UPDATE 
     article 
     SET title=?, content=?  
     WHERE id=?"; 

if ($stmt = $mysqli->prepare($SQL)) { 
    $stmt->bind_param("sss", $title ,$content ,$id); 
    $stmt->execute(); 
} 
} 

更新のために準備されたステートメントを使用することになり、ここでスタートhttp://www.w3schools.com/php/default.aspとクロールから上から下へのを通して神の仕事に正直 を歩いに行くが、その後、ここでF1における https://symfony.com/と希望を行きますあなたのページを見てみたいとしているので、カー次に

+0

コメント仲間に感謝します。私はこれを見て、これが問題かどうかを見ていきます。私はあなたに戻ってきます。ありがとうございました –

+0

私はすべての取得の投稿に変更しました。それでも動作しません。他のアイデア?または一般的に私のコードが間違っていますか?なぜなら私は私のデータベースから情報を入力するフォームを取得するが、私はPOSTを使用する場合フォームが空白であり、私の情報を表示しないので、私は私のフォームをGETとして投稿する必要があった理由は、このwww.jamesrphayes.index.phpを見て編集をクリックしてください。私はgetの代わりにpostを使っているので、フォームは空白です。 –

+0

okあなたのプロセスページでvar_dump($ post)を試してください – hounded

-1

使用フォームメソッドポストかはprocessarticle.php$_GET内のすべての$_POSTを変更します。
$_GET['edit_id']$_GET['id']のprocessarticle.phpに変更してみてください。

+0

POSTはこれを行う良い方法ですが、GETで行うことはできません。 – hounded

関連する問題