OK, mam , miało być tak:
public function add()
{
$stmt = $this->db->prepare('INSERT INTO city (name,country_id) VALUES(:name,:country_id)');
$stmt->execute(array(':name' => $this->name, ':country_id' => 1
)); }
Jeszcze chciałem prosić o podpowiedź jak pobrać ID zapisanego obiektu w bazie i przekazać go jako parametr przy zapisywaniu pola innego obiektu w sytuacji gdy encje połączone są w relacji "jeden do wielu" .
i potrzebuję zapisać to coś w ten deseń (country będzie pobierane na stronie z pola rozwijanego):
W klasie "Country" mam tak:
public function findById($id)
{
$stmt = $this->db->prepare('SELECT * FROM Country WHERE country_id :id');
$stmt->execute(array('id' => $id)); $row = $stmt->fetch();
return $row;
}
i zapisuję to tak:
require_once 'Model/Country.php';
require_once 'Model/City.php';
$pdo = new PDO('mysql:host=localhost;dbname=database', 'login', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$country = new Country($pdo);
$country->findById(2);
$city = new City($pdo);
$city->setName('Liverpool');
$city->setCountry($country);
$city->add();
} catch (PDOException $e) {
}
PDO krzyczy:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2'' at line 1