2013-08-30 92 views
0

我想設置一個更新功能,從一個表單獲取數據,但它並沒有更新它在phpmysql,這裏是查詢,可能是我缺少的東西。更新數據到mysql不工作

$query="UPDATE controlpanel1 SET ftitle_p1_1 = '$_POST[ftitle_p1_1]'"; 
+2

WHERE子句在哪裏? – Shomz

+4

哦,我的SQL注入是該查詢的名稱。 – Mihai

+3

您似乎已開放給SQL注入。另外,'$ _POST []'裏面的值應該用撇號填充。或者你可以這樣做:''UPDATE controlpanel1 SET ftitle_p1_1 ='「。 $ _POST ['ftitle_p1_1']。 「'」;'。但是,再次,** SQL注入** – jdepypere

回答

1

好吧,正如大家都想說的那樣,你不應該那樣做,因爲這很危險。 讓我嘗試給你一個什麼樣的或多或少的更可接受的過程中,與庫MySQLi(您想爲使用的MySQLi或PDO)和一份準備好的聲明一個基本的例子:

$query= $MysqliConnection->prepare("UPDATE controlpanel1 SET ftitle_p1_1 = ? WHERE id = ?"); //reason why it's not updating, probably. You have to tell the system where to update. Which row. 
$query->bind_param("si", $title, $id); //string, integral - title and id(?). Just guessing. 
$title = $_POST["title_p1_1"]; 
$id = $_GET["I_have_no_idea"]; // or $_POST["I_have_no_idea"]; 
$query->execute(); 
$query->close(); 
$MysqliConnection->close(); 

,或者是指,說,this page。 消毒數據,請......即使有準備好的陳述,我也檢查字符串是否有效。我太擔心了,你不是?

+0

感謝您的回答,我太擔心,因爲我只是試圖讓機制工作,當然我會做更多來保護數據庫。謝謝您的幫助。 – user2325465

+0

好,如果這是你正在尋找的答案,請接受它。很高興幫助! – tattvamasi

0

確保您的mysqli擴展名和pdo擴展名在您的php.ini配置文件中啓用。
您需要選擇是否要使用程序或OO方式以及mysqli或PDO方式。
這是程序mysqli:

$DBConnect = new mysqli("localhost", "root", "myCoolPW", "myDBname"); 
$FTitle = '_'; 
$FTitle = $_POST['ftitle_p1_1']; 
echo " Test posted FTitle: " . $FTitle . " "; 
$query = " 
    UPDATE controlpanel1 
    SET ftitle_p1_1 = '$FTitle' 
    WHERE id != '2' 
", 
echo " Test query: " . $query . " "; 
mysqli_query($DBConnect, $query); 
if (mysqli_affected_rows($DBConnect) == -1) 
    echo "NOT successfull :-("; 
else 
    echo "SUCCESS!!! :-)"; 
+0

感謝您的幫助。 – user2325465