我想基於用戶輸入更新我的SQL表。因此,用戶從選擇列表中選擇他們想要更新的列。然後他們輸入行中的數據,然後輸入他們想要更新的數據。所以說選擇列隊名,然後輸入他們想要通過文本框更改的隊名,然後通過另一個文本框輸入新名稱。那就是我試圖發生的事情。基於用戶選擇使用PDO通過PHP更新特定的行問題
我試圖從用戶刪除數據並修改它的位置複製粘貼我的代碼。我已經嘗試了一些不同的東西,我想的第一件事就是給了我這個錯誤:
UPDATE teams SET rockets = :value1 WHERE teamname = rockets SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rockets' in 'where clause'
我的SQL語句是這樣的:
$sql = "UPDATE teams SET $selectData = :value1 WHERE $columnSelect = $selectData";
於是,我試圖做這樣的事情:
下面整個代碼,如所述的上述我已經嘗試了幾種不同的thigns與$sql
變量:
PHP
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$columnSelect = $_POST['selectColumn2'];
$selectData = $_POST['selectData'];
$updateData = $_POST['updateData'];
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// sql to delete a record
$sql = "UPDATE teams SET :value1 = :value2 WHERE $columnSelect = :value1";
// use exec() because no results are returned
$stmt = $conn->prepare($sql);
$stmt->execute(array(':value1'=>$selectData, ':value2'=>$updateData));
if ($stmt->rowCount() > 0) {
echo 'Updated '.$stmt->rowCount().' rows';
} else {
echo 'No rows updated';
}
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
}
?>
HTML
<form method='post' action='addData.php'>
Select a column name, then enter which data to update.
<br>
<br>
<label for='option2'>
<select name='selectColumn2'>
<option value='teamname' id='team2'>teamname</option>
<option value='city' id='city2'>city</option>
<option value='bestplayer' id='best2'>bestplayer</option>
<option value='yearformed' id='year2'>year</option>
<option value='website' id='website2'>website</option>
</select>
</label>
<label for='option2'>
select data to change: <input type='text' name='selectData'>
enter new data: <input type='text' name='updateData'>
</label>
<br><br>
<input type='submit' value='Submit New Entry'>
</form>
基本上我是什麼做的是採取$columnSelect
,發現該列$selectData
和使用PDO法$updateData
更換。我究竟做錯了什麼?
列名和表名不能參數(據我所知)。當涉及到這些元素時,您必須找到一種不同的方式來過濾用戶輸入。 – Rasclatt