Robię prostą listę 'todo'.
Tak wygląda html z formularzem:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="index.css" /> <meta charset="UTF-8" /> </head> <body> <div id="wrapper"> <form action="dodaj.php" method="POST"> <input type="text" name="todo" value="Co masz zrobić?" /> <input type="submit" value="Dodaj" /> </form> </div> </body> </html>
Dodaj.php:
<?php class DB_CONN { public $todo = $_POST['todo']; public $DBH; public $STH; function __construct($path_to_db) { try { $this->DBH = new PDO("sqlite:".$path_to_db); } catch(PDOException $e) { } } function __destruct() { $this->DBH = null; } function add_todo() { try { $this->STH = $this->DBH->prepare("insert into todo_list (todo) values(':todo')"); //var_dump($this->DBH->prepare("insert into todo_list (todo) values(:todo)")); $this->STH->bindParam(':todo', $this->todo); $this->STH->execute(); } catch(PDOException $e) { } } } $driver = new DB_CONN("D:/Programy/moja_db.db"); $driver->add_todo('asd'); ?>
PHP wywala errora: Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) on line 5
Linijka 5:
public $todo = $_POST['todo'];
Szukałem jakiś błędów w kodzie, ale jedynym średnikiem jaki mógłbym pominąć był ten przy error_reporting. Jeśli zmienię $todo na cokolwiek innego poza $_POST lub $_GET to wszystko działa. Poza tym jeśli wywalę tą linijkę poza klasę też wszystko działa.
Pracuję na PHP 5.4.4 na localhoscie.