2016-08-10 100 views
1

「來運行多個SQL查詢試圖創建一個CRUD,除了我的Update函數,其他所有工具都可以運行。我覺得問題出在第二個sql查詢中。當我點擊提交時,它只是刷新,變化消失了。任何人都可以告訴我如何找到我需要改變/讓我改變什麼?

<head> 
<title>Update</title> 
</head> 

<body> 
</form> 



<?php 

require_once('dbconnect.php'); 
$id = $_GET['id']; 
$sql = "SELECT * FROM dealers where ID=$id"; 
$result = $conn->query($sql); 



if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo '<form action="" method="post">'; 
     echo "Company: <input type=\"text\" name=\"CName\" value=\"".$row['CName']."\"></input>"; 
     echo "<br>"; 
     echo "Contact: <input type=\"text\" name=\"Contact\" value=\"".$row['Contact']."\"></input>"; 
     echo "<br>"; 
     echo "City: <input type=\"text\" name=\"City\" value=\"".$row['City']."\"></input>"; 
     echo "<br>"; 
     echo "<input type=\"Submit\" = \"Submit\" type = \"Submit\" id = \"Submit\" value = \"Submit\">"; 
     echo "</form>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 
if(isset($_POST['Submit'])){ 
$sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where ID=$id"; 
$result = $conn->query($sql); 
} 
$conn->close(); 

?> 
+1

您的代碼很容易受到[SQL-注射(http://stackoverflow.com/questions/60174 /如何-可以-I-防止-SQL注入功能於PHP)。請開始使用Prepared,Parameterized Queries。 –

+0

如果你沒有選擇(我有一個PHB,堅持任何HTML通過PHP'echo'服務) - 然後在你的if(isset($ _ POST)邏輯塊中,你需要重新執行SELECT *來自ID = $ id - >的經銷商,並回顯HTML的變化。由於這是服務器端邏輯提供HTML,所以它就像一頭爛泥似的混亂,你需要區分你的顧慮:你有一個SELECT(cRud )和一個UPDATE(crUd)在同一個函數中,這很糟糕,即使你從服務器上提供動態HTML(這也是不好的) – RyanNerd

回答

2

相反樓內PHP一種形式,只是結束你while循環內PHP代碼分割和寫在一個乾淨的方式然後再次啓動PHP的HTML。所以你不會犯任何錯誤。

此外,您還必須從表單中提交您的$id

試試這個

<?php 

require_once('dbconnect.php'); 

$id = $_GET['id']; 
$sql = "SELECT * FROM dealers where ID=$id"; 
$result = $conn->query($sql); 


if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
?> 

    <form action="" method="post"> 

     <input type="hidden" name="id" value="<?= $id ?>" /> 

     Company: <input type="text" name="CName" value="<?= $row['CName'] ?>" /> 
     <br> 

     Contact: <input type="text" name="Contact" value="<?= $row['Contact'] ?>" /> 
     <br> 

     City: <input type="text" name="City" value="<?= $row['City'] ?>" /> 
     <br> 

     <input type="Submit" name="Submit" id="Submit" value="Submit" /> 

    </form> 

<?php 

    } // end while loop 

    echo "</table>"; 
} 
else { 
    echo "0 results"; 
} 

注:你逝去的不確定變量到您的更新查詢。在您提交表單時,您必須在使用它們之前定義這些變量。

if (isset($_POST['Submit'])) { 

    $CName  = $_POST['CName']; 
    $Contact = $_POST['Contact']; 
    $City  = $_POST['City']; 

    $id  = $_POST['id']; 

    $sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where ID=$id"; 

    $result = $conn->query($sql); 
} 

$conn->close(); 
+0

你的答案更滿了 –

+0

我只想說再次感謝,朋友 – Jitter

0

那個循環? ID主鍵還是不?

也許u需要創造這樣as_id表經銷商更關鍵

<input type="hidden" name="idform" value="$as_id"> 

在statment

if($_POST){ 
$idf = $_POST['idform']; 
if(!empty($idf)){ 
$sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where as_id=$idf"; 
$result = $conn->query($sql); 
} 
$conn->close(); 
} 
相關問題