2015-04-05 75 views
-1

我有一個Web應用程序,學生分爲「批」。無法插入MySQL的選擇值

我想插入特定批次的學生,批次將由用戶通過選擇選項來選擇。在將該學生添加到特定批次後,他/她將被添加到stdhold表格中。但是,它僅插入選擇選項的第一個選定值。

<?php 
function specialCOn(){ 
$connew=mysqli_connect("localhost","root",""); 
$db=mysqli_select_db($connew,'mcqs'); 
return($connew); 
} 
if (isset($_POST['add'])) 
{ 
$namestd=$_POST['std_name']; 
$batchstd=$_POST['batch']; 
$FNAME=$_POST['f_name']; 
$query3="INSERT INTO `$batchstd` VALUES('','$namestd','$FNAME')"; 
$rsq3=mysqli_query(specialCOn(),$query3); 
mysqli_close(specialCOn()); 
$querrollno="select rollno from `$batchstd` order by rollno desc"; 
$rsqrollno=mysqli_query(specialCOn(),$querrollno); 
$getrollno=mysqli_fetch_array($rsqrollno); 
$rollnoto=$getrollno[0]; 
echo "<script>alert('$batchstd')</script>"; 
echo "<script>alert('$rollnoto')</script>"; 
mysqli_close(specialCOn()); 

//Problem is here 
$querystdhold="INSERT INTO stdhold  values($rollnoto,'$namestd','$FNAME','$batchstd')"; 
$rsqhold=mysqli_query(specialCOn(),$querystdhold); 
mysqli_close(specialCOn()); 
if ($rsq3&&$rsqhold) 
{ 
    echo "<script> alert('Student Added.'); 
    window.location.assign('addstudent.php'); 
    </script>"; 

    //header('Location:addstudent.php'); 
} 
else 
{ 
    echo "<script> alert('You Havenot added Student.'); 
    window.location.assign('addstudent.php');</script>"; 

} 

} 



?> 
+0

使用[prepared statements](http://php.net/manual/en/mysqli.prepare.php)。 – 2015-04-05 11:41:12

+0

您的數據庫中存在針對root用戶的SQL注入漏洞,這意味着即使是在同一臺服務器上不相關的應用程序也可能被遠程篡改。此外,您的縮進需要修復 - 目前很難閱讀。 – halfer 2015-04-05 11:43:54

回答

0

嘗試在你的插入查詢指定列名:

INSERT INTO stdhold (col1, col2, col3, col4) VALUES ($rollnoto, '$namestd', '$FNAME', '$batchstd');

僅供參考看到MySQL Insert documentation

+0

嘗試修復超鏈接的網址.. – 2015-04-05 12:02:02

+0

@EkoJunaidiSalam修好了,謝謝你的支持! – 2015-04-05 12:08:32

+0

不客氣 – 2015-04-05 12:09:24

0

嘗試使用這樣的:

$db = new mysqli("host","user","pw","database"); 
$stmt = $db->prepare("INSERT INTO ? (col1,col2,col3) VALUES('',?,?)"); 
$stmt->bind_param('sss', $_POST['batch'], $_POST['std_name'], $_POST['f_name']); 
$stmt->execute(); 

具體交易例子,你需要read的@Amber回答如何建立安全準備好的聲明。

希望這會幫助你。