テキストとファイルの簡単な更新フォームを作成しました。これは私のコードですPHP - ファイルを正常に更新しましたが、テキストを更新できませんでした。
<?php
require("config.php");
$id = $_GET['id'];
$sql = "SELECT * FROM contracts WHERE id= '$id'";
$result = $con->query($sql);
while ($row = $result->fetch_assoc())
{
?>
<html><head><title>test</title></head>
<body>
<form method="POST" action="" enctype="multipart/form-data">
ID: <?php echo $id; ?><br>
<input type="hidden" name="id" value="<?php echo $id; ?>" />
Contract Title
<input type="text" name="contract_title" value="<?php echo $row['contract_title']; ?>" /><br>
Upload File:
<?php echo $row['filename'] ?>
<input type="file" name="upload"/><br>
<input type="submit" name="edit" value="Submit"/>
</form>
</body>
</html>
<?php
}
if(isset($_POST['edit']) )
{
if ($_FILES['upload']['size'] != 0){
$contract_title = $con->real_escape_string($_POST['contract_title']);
$filename = $con->real_escape_string($_FILES['upload']['name']);
$filedata= $con->real_escape_string(file_get_contents($_FILES['upload']['tmp_name']));
$filetype = $con->real_escape_string($_FILES['upload']['type']);
$filesize = intval($_FILES['upload']['size']);
$query = "UPDATE `contracts` set `filename` = '$filename',`filedata` = '$filedata', `filetype` = '$filetype',`filesize` = '$filesize' WHERE `id` = '$id' " ;
if ($con->query($query) == TRUE) {
echo "<br><br> New record created successfully";
} else {
echo "Error:<br>" . $con->error;
}
} else {
$contract_title = $con->mysqli_real_escape_string($_POST['contract_title']);
$filename = $con->real_escape_string($_FILES['upload']['name']);
$filetype = $con->real_escape_string($_FILES['upload']['type']);
$filesize = intval($_FILES['upload']['size']);
$query = "UPDATE `contracts` set `filename` = '$filename', `filetype` = '$filetype',`filesize` = '$filesize' WHERE `id` = '$id' " ;
if ($con->query($query) == TRUE) {
echo "<br><br> New record created successfully";
} else {
echo "Error:<br>" . $con->error;
}
}
$con->close();
}
?>
投稿ボタンをクリックすると、テキスト以外のファイルアップロードが正常に更新されました。それはアップロードファイルプロセスと同じ問題をするため、メソッドから取得するためにポストから変更する必要はありません。これをどうやって解決するのですか?
あなたのコードはSQLインジェクションに対して脆弱です。 – hassan
'$ filedata'をエコーした場合は何も印刷されますか? – hassan
@hassanそれは、行7の未定義の変数を言いました。 – MechaMetalHead