2013-08-07 46 views
-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語言。在這個頁面,如果不創建表1創建它,然後將值代入列值未插入

創建表,我插入值到表後,但它顯示我的錯誤中插入查詢

我收到此錯誤 - 您的SQL語法錯誤;在'INSERT INTO p VALUES'('count','name','asc','1','search','count','order')附近檢查與您的MySQL服務器版本相對應的手冊, )」在我在做什麼錯線11

+0

你試過了什麼?爲什麼不簡單地執行標準調試? –

+0

您是否嘗試過SQL,例如Phpmyadmin? –

+1

你做錯了的第一件事是使用不推薦使用的mysql_函數。至於錯誤,我不認爲你可以同時執行兩個查詢。 – JJJ

回答

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的關鍵字

1

我是絕對不知道如果這是問題,但你在你的INSERT語句傳遞7個值,而你的表deffinition有8個領域。

我想你是這麼做的,因爲'id'字段是自動增量的。但是,如果是這樣的話,你應該指定哪些列與你的價值觀在INSERT語句對應:

INSERT INTO $p (title, column, ord, ...) VALUES ('$a','$b','$c','$d','$f','$h','$g') 
+0

我用你的方式,但我沒有得到答案.....它顯示我同樣的錯誤 – user2657625

+0

@ user2657625你爲什麼不嘗試在你的屏幕上打印你的SQL語句,所以你可以使用MySQL運行它客戶端或至少將其複製到您的問題? –

+0

+1事實上,這是OP代碼的一個問題。 –

1

這裏是一個預演,分離該兩種說法 - 應該工作:

<?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); 
    } 
} 
?> 
+0

檢查了phpmyadmin中的sql ..作品.. – snitch182

-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

+2

'''在字符串的前面。在任何情況下,缺少PHP字符串分隔符都不會導致MySQL錯誤。 – JJJ