插入查询中的PHP错误

时间:2013-07-10 08:44:51

标签: php mysql sql

我疯了,这个片段中的错误在哪里?

<?php
include('db.php');
switch ($_REQUEST['tab']) {
  case 'categorie':
    $sql = mysql_query("SELECT * FROM categorie");
    echo "INSERT INTO categorie ( id, nome, free, pos ) VALUES " ;
    $a=0;
    while($tmp = mysql_fetch_array($sql))
    {
      if($a!=0)
        echo ",";
      echo "(".$tmp['id'].", '".$tmp['nome']."', ".$tmp['free'].", ".$tmp['pos'].")";
      $a=1;
    }
    break;
  case 'articoli':
    $sql = mysql_query("SELECT * FROM articoli");
    echo "INSERT INTO articoli ( id, titolo, testo, sottocategoria, free, pos ) VALUES " ;
    $a=0;
    while($tmp = mysql_fetch_array($sql))
    {
      if($a!=0)
        echo ",";
      echo "(".$tmp['id'].", '".$tmp['titolo']."', '".$tmp['testo']."', ".$tmp['sottocategoria'].", ".$tmp['free'].", ".$tmp['pos'].")";
      $a=1;
    }     
    break;
  case 'sottocategorie':
    $sql = mysql_query("SELECT * FROM sottocategorie");
    echo "INSERT INTO sottocategorie ( id, nome, categoria, free, pos ) VALUES " ;
    $a=0;
    while($tmp = mysql_fetch_array($sql))
    {
      if($a!=0)
        echo ",";
      echo "(".$tmp['id'].", '".$tmp['nome']."', ".$tmp['categoria'].", ".$tmp['free'].", ".$tmp['pos'].")";
      $a=1;
    }
    break;
}
?>

表示

附近有语法错误

我发布了整个代码.......................................... .....................................

1 个答案:

答案 0 :(得分:1)

编辑:在您的澄清之后,问题不在您的PHP中,而在于执行PHP脚本的输出

您的PHP将生成类似于;

的输出
INSERT INTO A (a,b,c) VALUES (1,2,3),(4,5,6)   // <-- note the missing semicolon
INSERT INTO B (a,b,c) VALUES (1,2,3),(4,5,6)   // <-- note the missing semicolon

添加缺少的分号,你应该开始工作了。

----原创答案----

while($tmp = mysql_fetch_array($Query))
{
   ...
}
break;

你的循环之外有一个break,这是(除非它嵌套在另一个循环中)是语法错误。

此外,您的SQL从名为table的表中进行选择,该表是一个保留的MySQL关键字。如果确实有一个名为table的表,则需要将查询更改为;

$Query = mysql_query("SELECT * FROM `table`");