2012-04-29 84 views
1

好吧,所以我試圖在行內插入動態數據。這很可能不是最好的辦法,但在將我的頭撞在牆上幾個小時後,我仍然不明白爲什麼$insert字符串不會被mysql_query查詢。即使當我echo它,並複製迴應的查詢它的工作原理,但查詢變量不。不能在MySQL查詢中插入字符串變量

$insert = '"INSERT INTO '.$_SESSION['tabsel'].' ('; 
echo "<form method='post' action=''>"; 
while($row = mysql_fetch_array($result)) 
{ 
    echo "Enter ".$row[0]." <input type='text' name='data[]'>"; 
    echo "<br>"; 
    $insert .= $row[0].","; 
    $_SESSION['insert'] = $insert; 
} 

echo "<input type='submit' value='Add'>"; 
echo "</form>"; 
if(isset($_POST['data'])) 
{ 
    $insert = $_SESSION['insert']; 
    $strlength = strlen($insert); 
    $insert = substr($insert,0,($strlength-1)); 
    $insert .= " VALUES ("; 
    foreach($_POST['data'] as $value) 
    { 
     $insert .= "'$value',"; 
     $_SESSION['insert'] = $insert; 
    } 
} 

$insert = $_SESSION['insert']; 
$strlength = strlen($insert); 
$insert = substr($insert,0,($strlength-1)); 
$insert .= ')"'; 
$_SESSION['insert'] = $insert; 
$insert = $_SESSION['insert']; 
echo $insert."<br>"; 
$seldb = mysql_select_db($_SESSION['sel']); 
if($seldb && (!empty($_POST['data'])) && (isset($_SESSION['sel'])) && (isset($_SESSION['tabsel']))) 
{ 
    $insert = $_SESSION['insert']; 
    echo $insert; 
    $query = mysql_query($insert, $con); 
    if($query) 
    { 
     echo "Record succesfully added!"; 
    } 
    else 
    { 
     echo mysql_error(); 
    } 
} 

錯誤給出:

你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊正確的語法在1號線

+0

大約還張貼回顯的字符串是什麼?你的代碼中沒有'mysql_query'。 – Alexander 2012-04-29 10:31:38

+0

「INSERT INTO druga(id,podaci,d,ra)VALUES('d','d','d','d')」查詢是下一行:) P.S.錯誤是您的SQL語法有錯誤; ('d','d','d','d')「 '在第1行 – 2012-04-29 10:33:31

+1

**不要將未經過濾的用戶輸入傳遞給SQL **。 'mysql_'函數已被棄用,您應該使用'mysqli_'或'PDO'來代替,並使用綁定變量將用戶輸入傳遞給查詢。 (另外,我實際上並沒有在你發佈的代碼中看到任何'mysql_query'的調用。) – DCoder 2012-04-29 10:34:29

回答

1

附近"INSERT INTO mtable (id,nr,d,ra) VALUES ('d','d','d','d')"使用在回顯的字符串縱觀

"INSERT INTO druga (id,podaci,d,ra) VALUES ('d','d','d','d')" 

您需要刪除的領導和在SQL查詢中放置引號字符。修改這兩行代碼:

  • 刪除前導引號字符。

    $insert='INSERT INTO '.$_SESSION['tabsel'].' ('; 
    

    代替

    $insert='"INSERT INTO '.$_SESSION['tabsel'].' ('; 
    
  • 刪除尾隨引號字符。

    $insert.=')'; 
    

    代替

    $insert.=')"'; 
    
+0

感謝一堆,隊友!它的工作:) – 2012-04-29 10:50:40

+0

@ user1364022,不要忘記標記你的答案;) – Alexander 2012-04-29 10:59:10

+0

啊哈,第一次在這裏:)完成! – 2012-04-29 11:04:19