2012-04-29 90 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