-1
<?php
  $ll=mysql_query("CREATE TABLE IF NOT EXISTS p (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '',
  `colum` varchar(255) NOT NULL DEFAULT '',
  `ord` varchar(255) NOT NULL DEFAULT '',
  `tex` varchar(255) NOT NULL DEFAULT '',
  `search` varchar(255) NOT NULL DEFAULT '',
  `count` varchar(255) NOT NULL DEFAULT '',
  `order` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
)ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g');") or die(mysql_error())  ;
if($ll){
 echo  "insert AND CREATE ";}
 else {echo "fail"; }
?>

私はphp言語で働いています。このページでテーブルが作成されていない場合は、最初にテーブルを作成してから値を列に挿入します

テーブルを作成した後、値をテーブルに挿入していますが、挿入クエリでエラーが表示されます

このエラーが発生しています。SQL 構文にエラーがあります。near 'INSERT INTO p VALUES ('count','name','asc','1','search','count','order ' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 )' 11 行目

私は何を間違っていますか

4

4 に答える 4

1

これは、2 つのステートメントを分離する予行演習です。動作するはずです。

<?php
$querys[]="CREATE TABLE IF NOT EXISTS $p (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `title` varchar(255) NOT NULL DEFAULT '',
      `colum` varchar(255) NOT NULL DEFAULT '',
      `ord` varchar(255) NOT NULL DEFAULT '',
      `tex` varchar(255) NOT NULL DEFAULT '',
      `search` varchar(255) NOT NULL DEFAULT '',
      `count` varchar(255) NOT NULL DEFAULT '',
      `order` varchar(255) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`)
    )ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1";

$querys[]="INSERT INTO $p VALUES (null,'$a','{$b}','{$c}','{$d}','{$f}','{$h}','{$g}')";


foreach($querys as $sql) {
    $ll = mysql_query($sql);
    $error=mysql_error();
    if($error!='') {
        print $sql."\n";
        die($error);
    }
}
?>
于 2013-08-07T08:53:44.423 に答える
1

それが問題であるかどうかは絶対にわかりませんが、テーブル定義に 8 つのフィールドがあるのに、INSERT ステートメントで 7 つの値を渡しています。

「id」フィールドは自動インクリメンタルであるため、そうしていると思います。ただし、その場合は、insert ステートメントで値に対応する列を指定する必要があります。

INSERT INTO $p (title, column, ord, ...) VALUES ('$a','$b','$c','$d','$f','$h','$g')
于 2013-08-07T08:39:50.807 に答える
0
INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g')

する必要があります

INSERT INTO p (`title`,`colum`,`ord`,`tex`,`search`,`count`,`order`) VALUES ('$a','$b','$c','$d','$f','$h','$g')

したがって、順序はmysqlのキーワードです

于 2013-08-07T08:59:22.993 に答える
-3

挿入ステートメントを " 二重引用符で終了しましたが、開始していません。次のいずれかを書くことができます

INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g');

またはあなたが書くことができます

("INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g')");

あなたのコードで試してみてください

注 - mysqli と mysql を同じコードで使用しないでください。代わりに、mysqli PDO を使用できます。

于 2013-08-07T09:12:29.857 に答える