2017-05-28 57 views
0

我創建了一個具有下拉列表和上傳文件的表單。下拉列表值由數據庫填充。這個表單的動作文件是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>"; 

?> 
+0

根據變量類型,你可能需要引號添加到查詢?我有兩個建議: 首先,使用mysqli,mysql已經被棄用。 第二:使用mysql_error()函數檢查錯誤原因。 –

+1

請在問題本身中顯示所有相關代碼....並具體說明錯誤是什麼。圖像中的代碼不能被複制,並要求我們打開2個附加信息源來閱讀在問題本身中應該提供的內容 – charlietfl

+0

請告訴我這只是一個測試或個人項目。因爲該代碼對於sql注入是開放的。請不要將該代碼放在服務器上。首先閱讀關於sql安全性的內容。我認爲你遇到麻煩的原因是你添加to_user變量的方式。而是像這樣正確地轉義它:''。$ _ POST ['to_user']'但是,再次,請在繼續您的項目之前閱讀關於sql注入。 – Chris

回答

0

嘗試:

mysql_query(" UPDATE TABLE2 SET COL6=('$filename') WHERE COL1=" . $_POST['to_user'] . " ") 

PHP給字符串內的問題,包括陣列,您添加$文件名相同的方式。你爲什麼要使用圓括號在$文件名

mysql_query(" UPDATE TABLE2 SET COL6=('$filename') WHERE COL1='" . $_POST['to_user'] . "' ") 
相關問題