我創建了一個具有下拉列表和上傳文件的表單。下拉列表值由數據庫填充。這個表單的動作文件是add.php文件,用於更新數據庫並上傳數據庫中的文件。我想從用戶選擇的選項中更新數據庫,該選項從具有選擇名稱「to_user」的下拉列表中選擇,並且對於數據庫中的該行,文件將根據選定的選項值進行上傳。我在add.php文件中使用這個SQL查詢:如何在php文件的SQL查詢中使用下拉列表中選中的選項值?
mysql_query(" UPDATE TABLE2 SET COL6=('$filename') WHERE COL1=$_POST['to_user'] ");
我收到一個錯誤。我該怎麼辦? 錯誤: 解析錯誤:語法錯誤,意想不到 ''(T_ENCAPSED_AND_WHITESPACE),在線路中/Applications/XAMPP/xamppfiles/htdocs/add.php期待標識符(T_STRING)或可變(T_VARIABLE)或數字(T_NUM_STRING)21
index.php - webpage which has the drop down list and file uploading option
add.php- action file of the form created in index.php file
的index.php
<!DOCTYPE html>
<html>
<head>
<title>Sch </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1」>
<link rel="stylesheet" href="https://www.w3schools.com/tags/tag_select.asp">
<link rel = "stylesheet" href="custom.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<style>
div.container {
margin: 20px 0 20px 0;
padding: 20px;
}
div.space {
margin: 2px 0 2px 0;
padding: 1px;
}
div.space1 {
margin: 2px 0 2px 0;
padding: 1px;
}
div.space2 {
margin: 2px 0 2px 0;
padding: 2px;
}
div.space3 {
margin: 2px 0 2px 0;
padding: 2px;
}
div.space4 {
margin: 2px 0 2px 0;
padding: 2px;
}
div.space5 {
margin: 10px 0 15px 0;
padding: 2px;
}
</style>
</head>
<body>
<div class="container">
<h2>Select the Radioactive source and upload the documents:</h2>
</div>
<form enctype="multipart/form-data" action="add.php" method="POST">
<div class="space">
<?php include('d2.php') ?>
<select name="to_user" class="form-control">
<option value="pick">Radioactive source</option>
<?php
$sql = mysqli_query($con, "SELECT DISTINCT COL1 FROM TABLE2");
$row = mysqli_num_rows($sql);
while ($row = mysqli_fetch_array($sql))
{
echo "<option value='". $row['COL1'] ."'>" .$row['COL1'] ."</option>" ;
}
?>
</select>
</div>
<div class="space1">
<p>
Upload NOC file :<br>
<input type="file" name="datafile1" size="40">
</p> </div>
<div class="space2">
<p>
Upload LT file :<br>
<input type="file" name="datafile2" size="40">
</p> </div>
<div class="space3">
<p>
Upload Import Noc file :<br>
<input type="file" name="datafile3" size="40">
</p> </div>
<div class="space4">
<p>
Upload Photo Inventory file :<br>
<input type="file" name="datafile4" size="40">
</p>
</div>
<div class="space5">
<input type="submit" value=Submit
</div>
</form>
<div class="background">
<div class="transbox">
</body>
<footer>done </footer> </html>
add.php
<?php include('index2.php') ?>
<?php
$file1=($_FILES['datafile1']['name']);
$file_size1 = $_FILES['datafile1']['size'];
$file2=($_FILES['datafile2']['name']);
$file_size2 = $_FILES['datafile2']['size'];
$file3=($_FILES['datafile3']['name']);
$file_size3 = $_FILES['datafile3']['size'];
$file4=($_FILES['datafile4']['name']);
$file_size4 = $_FILES['datafile4']['size'];
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("CSV_DB") or die(mysql_error()) ;
if($file_size1 >0)
{
mysql_query("UPDATE Table2 SET COL6=('$file1') WHERE COL1=$_POST['to_user']")or die('Error, query failed');
}
if($file_size2 >0)
{
mysql_query("UPDATE Table2 SET COL7=('$file2') WHERE COL1=$_POST['to_user']")or die('Error, query failed');
}
if($file_size3 >0)
{
mysql_query("UPDATE Table2 SET COL8=('$file3') WHERE COL1=$_POST['to_user']")or die('Error, query failed');
}
if($file_size4 >0)
{
mysql_query("UPDATE Table2 SET COL9=('$file4') WHERE COL1=$_POST['to_user']")or die('Error, query failed');
}
echo "<br>File $file1 uploaded<br>";
echo "<br>File $file2 uploaded<br>";
echo "<br>File $file3 uploaded<br>";
echo "<br>File $file4 uploaded<br>";
?>
:
根據變量類型,你可能需要引號添加到查詢?我有兩個建議: 首先,使用mysqli,mysql已經被棄用。 第二:使用mysql_error()函數檢查錯誤原因。 –
請在問題本身中顯示所有相關代碼....並具體說明錯誤是什麼。圖像中的代碼不能被複制,並要求我們打開2個附加信息源來閱讀在問題本身中應該提供的內容 – charlietfl
請告訴我這只是一個測試或個人項目。因爲該代碼對於sql注入是開放的。請不要將該代碼放在服務器上。首先閱讀關於sql安全性的內容。我認爲你遇到麻煩的原因是你添加to_user變量的方式。而是像這樣正確地轉義它:''。$ _ POST ['to_user']'但是,再次,請在繼續您的項目之前閱讀關於sql注入。 – Chris