2012-02-03 48 views
-1
$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something',$_SERVER['REQUEST_TIME'], $_SERVER['REQUEST_TIME'], '$somethingelse')"; 

產生的誤差是基本的查詢語句執行失敗

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in line 15 

我與查詢問題,但我不知道在哪裏的錯誤是。任何人都看到了光,請把它灑在我身上。謝謝你的位置。

編輯: 查詢創建我的表是

$query="CREATE TABLE ".$table_name." (id int not null auto_increment, something varchar(128), post_date varchar(32), edit_date varchar(32), somethingelse text)"; 
+2

您是否嘗試回顯查詢以便您可以看到正在問什麼。然後,通過將查詢到,像phpMyAdmin或工作臺等您的首選數據庫阿明程序測試,並在那裏測試查詢,看看它會作爲一個靜態的要求,這也應該產生更多的錯誤,可能的話, – 2012-02-03 09:34:25

+1

我得到的印象[Bobby Tables](http://bobby-tables.com/)在這裏將有一個場地日。 – Quentin 2012-02-03 09:37:29

+0

它看起來像你正在使用多個表作爲現有表有一個額外的列的替代品。這可能是一個壞主意。 – Quentin 2012-02-03 09:38:34

回答

0

你試過

$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something',".$_SERVER['REQUEST_TIME'].",". $_SERVER['REQUEST_TIME']", '$somethingelse')"; 

編輯 - 的問題是與$_SERVER['REQUEST_TIME']不得到由PHP解釋爲$sometext等你必須連接它

+0

你有什麼改變?發現差異答案不如他們可能的有用。 – Quentin 2012-02-03 09:36:26

+0

@Quentin對不起,我只是串聯'$ _ SERVER [「REQUEST_TIME」]',因爲它不是由PHP轉換和'''打破了你的查詢 – 2012-02-03 09:40:07

+0

@Quentin PHP並變量插補變量,關聯數組,你可以做$ _ SERVER [ REQUEST_TIME](沒有'''),但你得到一個通知 – 2012-02-03 09:41:44

0

嘗試:

$query="INSERT INTO ".$table_name." VALUES ('$rowNum','$something','".$_SERVER['REQUEST_TIME']."','". $_SERVER['REQUEST_TIME']."', '$somethingelse')"; 

數組的值是不應該出現在單或雙引號。

1

我覺得這句法更易於管理和調試任何東西,但最基本的參數替換成字符串:

$query = sprintf("INSERT INTO %s VALUES ('%s', '%s', '%s', '%s', '%s');", $table_name,      
        $rowNum, $something, $_SERVER['REQUEST_TIME'], $_SERVER['REQUEST_TIME'], 
        $somethingelse) 

注:您還可以在地方的sprintf用printf具有相同結構的輸出相同的串,就像打印或回聲聲明。

一對夫婦的其他建議過:

  1. 使用PDO來簡化和抽象的數據庫操作以及更容易確保所有準備語句中綁定參數的語句。
  2. 而不是使用$ _ SERVER [「REQUEST_TIME」]也許有些默認的「NOW()」日期字段和觸發器在數據庫上mod_dates將更加可靠和可維護的。 (雖然我沒有完整的上下文來知道你是否明確插入服務器時間的另一個原因,不能通過由數據庫處理的時間戳來處理)