Я новичок в SQLite и сейчас пытаюсь использовать его для проекта.
Я создал функцию, которая вставляет новую строку, если она с таким именем еще не существует.
Тем не менее, я не могу получить доступ к переменной базы данных внутри функции. Ничего не происходит.
Моя первая попытка выдает ошибку:
$db = new SQLite3("name.db");
$db->exec("CREATE TABLE IF NOT EXISTS warehouses (id INTEGER PRIMARY KEY, name VARCHAR(255), adjacent_l INTEGER DEFAULT null, adjacent_r INTEGER DEFAULT null, chem_a INTEGER DEFAULT 0, chem_b INTEGER DEFAULT 0, chem_c INTEGER DEFAULT 0, cap INTEGER)");
function newWH($name, $cap)
{
$letResult = $db->query("SELECT * FROM warehouses WHERE name = " . $name);
$letArray = (array) $letResult;
if (empty($letArray)) {
$db->query("INSERT INTO warehouses (name, cap) VALUES (" . $name . ", " . $cap . ")");
}
}
newWH("wh1", 10);
Я попытался передать переменную db в качестве параметра. Сайт больше не выдает ошибку, но никаких вставок не происходит. (И да, я пробовал без предложения if: -)
$db = new SQLite3("name.db");
$db->exec("CREATE TABLE IF NOT EXISTS warehouses (id INTEGER PRIMARY KEY, name VARCHAR(255), adjacent_l INTEGER DEFAULT null, adjacent_r INTEGER DEFAULT null, chem_a INTEGER DEFAULT 0, chem_b INTEGER DEFAULT 0, chem_c INTEGER DEFAULT 0, cap INTEGER)");
function newWH($name, $cap, $letDb)
{
$letResult = $letDb->query("SELECT * FROM warehouses WHERE name = " . $name);
$letArray = (array) $letResult;
if (empty($letArray)) {
$letDb->query("INSERT INTO warehouses (name, cap) VALUES (" . $name . ", " . $cap . ")");
}
}
newWH("wh1", 10, $db);