2016-04-24 233 views
0

我有一個問題,試圖用表單更新數據庫。MYSQL和PHP數據庫更新不會更新數據庫

所以,我的問題是,當我點擊更新什麼都沒有發生。數據庫不會更新。

另一個問題是,當我在我的表單和SQL查詢中使用POST。它不會將信息拉到編輯頁面,它是空白的。

對不起,如果這難以閱讀等,但這是我第一次發佈。另外,我知道在我的GET/POST查詢中存在安全漏洞,我只是試圖在開始使用準備好的語句或任何它們所調用的內容之前使它正常工作。如果我回應查詢並定義一個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> 

edit.php

<?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

嘗試使用連接(帶的連接字符串。)在UPDATE查詢的$ title和$內容以及。 –

+0

對不起在我的鏈接意味着什麼? –

+0

找到某些工作沒有任何價值,然後**修復安全漏洞。無論如何,你必須學習使用準備好的語句來修復它。爲什麼不節省時間並首先學習安全方法,而不是學習如何製作不安全的代碼,然後學習如何保護它? –

回答

0

你的edit.php表單有一個GET方法,但你在processarticle.php中使用POST變量,並且你有一個GET變量。

讓我們只說一個表單只能做一件事GET或POST

您的表單中指定,然後將訪問GET或基於表單POST方法變量

所以,如果你想要的網址更新基於關你的文章的形式首先讓我們看看ID =這應該是$ POST [「身份證」]隱藏字段在您的形式,而不是隱藏儘管

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

我越是看這更這將變成3部分迷你係列

確定您的processarticle。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從爬行到從上到下走 誠實的,爲神工作去然後去這裏 https://symfony.com/和希望在F1汽車

然後嘗試http://www.w3schools.com/bootstrap/default.asp,因爲你會想你的頁面看起來很酷

+0

感謝您的評論好友。我會看看這是否是這個問題。我會盡快回復您。謝謝 –

+0

我已經改變了所有獲得的職位。它仍然不起作用。任何其他想法?或者是我的代碼一般不正確?我不得不將我的表單作爲GET而不是發佈是因爲如果我使用獲取表單將從我的數據庫中填充信息,但是如果我使用POST表單是空白的並且不顯示我的信息。看看這個www.jamesrphayes.index.php並點擊編輯表單是空白的,因爲我使用後而不是get。 –

+0

ok在你的進程頁面上嘗試var_dump($ post) – hounded

-1

使用形式方法後或更改$_GET所有$_POSTprocessarticle.php
並嘗試將$_GET['edit_id']更改爲$_GET['id'],processarticle.php

+0

POST會是更好的方法,但這並不意味着您無法使用GET – hounded