2013-12-03 2 views
-1

Я пытаюсь использовать sqlite3 с php, и я копирую некоторые коды из Интернета, чтобы посмотреть, как это работает ... Ну, у меня проблема, и я не знаю, как ее решить. ...Sqlite3 с php, как создать таблицу и вставить?

<?php 
$db = new SQLite3($_REQUEST['dbname']); 

if(!$db){ 
    echo $db->lastErrorMsg(); 
} 
else{ 
    echo 'Database created!'; 
    $sql =<<<EOF 
      CREATE TABLE COMPANY 
      (ID INT PRIMARY KEY  NOT NULL, 
      NAME   TEXT NOT NULL, 
      AGE   INT  NOT NULL, 
      ADDRESS  CHAR(50), 
      SALARY   REAL); 
      EOF; 

    $ret = $db->exec($sql); 
    if(!$ret){ 
     echo $db->lastErrorMsg(); 
    } else { 
     echo "Table created successfully\n"; 
    } 
    $db->close(); 
} 

?> 

Если я удалю, код из моего «else», он создаст файл в моем каталоге! Но с этим еще я ничего не могу создать! В чем проблема с этим кодом?

P.S. : Я взаимодействую с php с HTML-страницей, которая имеет форму <>!

+0

Примечание от PHP руководства по синтаксису Heredoc: 'Закрывающий идентификатор должен начинаться в первом столбце line.' –

+0

$ db-> близко() ??? – Damiii

+1

Переместите свой EOF; 'в начало строки. В противном случае PHP не будет распознавать его как закрытый идентификатор для [heredoc] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc), а PHP будет используйте остальную часть скрипта в качестве строки. –

ответ

0

Youre heredoc идентификатор закрытия EOF; должен находиться в начале строки, иначе PHP не будет распознавать его как таковой и добавит остальную часть файла в строку.

echo 'Database created!'; 
$sql =<<<EOF 
     CREATE TABLE COMPANY 
     (ID INT PRIMARY KEY  NOT NULL, 
     NAME   TEXT NOT NULL, 
     AGE   INT  NOT NULL, 
     ADDRESS  CHAR(50), 
     SALARY   REAL); 
EOF; // <-- move to the beginning of the line 
Смежные вопросы