我有一个表 buildtracker
连接到一个表单。我正在尝试编辑特定行中的数据,因此更新
该行。
该表由以下列组成:ID key、EnteredBy、INI
$user = 'root';
$pass = '';
$db = 'cl_db';
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened.");
$rowID = $conn->real_escape_string($_POST['ID']);
$enteredBy = $conn->real_escape_string($_POST['enteredBy']);
$ini = $conn->real_escape_string($_POST['ini']);
$query = "UPDATE buildtracker SET
EnteredBy = '$enteredBy', INI = '$ini'
WHERE ID = '$rowID' ";
$success = $conn->query($query); //insertion above ^ is the column names
if (!$success) {
die("Couldn't enter data: ".$conn->error);
}
return $query;
我在表格上没有收到任何新数据或更新。我可以做些什么来改进它?
谢谢!
最佳答案
我不知道这段代码在您的应用程序中的什么上下文中。
但[强烈]建议使用准备好的语句来防止任何 SQL 注入(inject)攻击,尤其是使用来自 $_POST 的直接数据(可以清理)。
检查查询是否在准备好的语句中执行是通过$stmt->execute() .
$user = 'root';
$pass = '';
$db = 'cl_db';
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened.");
$prepare_query = "UPDATE buildtracker SET EnteredBy=?, INI=? WHERE ID=?";
$success = $conn->query($prepare_query); //insertion above ^ is the column names
if ($stmt = $conn->prepare($query)) {
// Possible data sanitation can be done below
$rowID = ($_POST['ID']);
$enteredBy = ($_POST['enteredBy']);
$ini = ($_POST['ini']);
// bind parameters
$stmt->bind_param('ssi', $enteredBy, $ini, $rowID);
// CHECKING is here: execute query (or die)
// Can check also for ($stmt->affected_rows > 0)
if (!$stmt->execute()){
die("Couldn't enter data: ".$conn->error);
}
return $query;
}
关于php - 使用更新表集使用 PHP 更新表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332690/