2016-03-30 3 views
0

Я пытаюсь выполнить обновление базы данных Sqlite3 с помощью PHP-скрипта, но я столкнулся с двумя ошибками, которые я не понимаю.Выполнение обновления sqlite3 на основе переменной с помощью php

PHP Warning: SQLite3::prepare(): Unable to prepare statement: 1, no such column: :column in C:\UwAmp\www\save.php on line 16, referer: http://localhost/Canvas.html

PHP Fatal error: Uncaught Error: Call to a member function bindParam() on boolean in C:\UwAmp\www\save.php:17\nStack trace:\n#0 {main}\n thrown in C:\UwAmp\www\save.php on line 17, referer: http://localhost/Canvas.html

Вот пример PHP кода я использую:

$url = $_POST['newURL']; 
$name = $_POST['saveName']; 
$index = $_POST['saveNum']; 
$user = $_POST['username']; 
$db = new SQLite3('Users.db'); 



$statement = $db->prepare("UPDATE Canvas_Saves SET ':column' = ':url' WHERE User = ':user'"); 
$statement->bindParam(':url', $url); 
$statement->bindParam(':user', $user); 
if($index ===1){ 
    $statement->bindParam(':column', 'Save1',SQLITE3_TEXT); 
} 
else if($index ===2){ 
    $statement->bindParam(':column', 'Save2',SQLITE3_TEXT); 
} 
else if($index ===3){ 
    $statement->bindParam(':column', 'Save3',SQLITE3_TEXT); 
} 
else if($index ===4){ 
    $statement->bindParam(':column', 'Save4',SQLITE3_TEXT); 
} 

$statement->execute(); 

Line 16 является $ db-> подготовить заявление. Я попытался это исследовать, но мне не повезло. Спасибо за любую помощь, которую вы можете дать.

+0

Как структура таблицы? –

+0

Соответствующие поля: Save1, Save2, Save3, Save4 в таблице Canvas_Saves. Каждое из полей имеет тип TEXT. – Bromic

ответ

0

Вы можете использовать этот

$url = $_POST['newURL']; 
$name = $_POST['saveName']; 
$index = $_POST['saveNum']; 
$user = $_POST['username']; 
$db = new SQLite3('Users.db'); 
$col=""; 
if($index ===1){ 
    $col="Save1"; 
} 
else if($index ===2){ 
    $col="Save2"; 
} 
else if($index ===3){ 
    $col="Save3"; 
} 
else if($index ===4){ 
    $col="Save4"; 
} 
$statement = $db->prepare("UPDATE Canvas_Saves SET ".$col."=:url WHERE User = :user "); 
$statement->bindParam(":url", $url); 
$statement->bindParam(":user", $user); 
$statement->execute(); 
+0

Это оставляет мне эту ошибку. Предупреждение: SQLite3 :: prepare(): Не удается подготовить оператор: 1, около " = ": ошибка синтаксиса в C: \\ UwAmp \\ www \\ save.php в строке 26, referer: http: // localhost/Canvas.html' Строка 26 относится к инструкции подготовки. – Bromic

+0

Я считаю, что у меня была проблема с моим индексом, который я проходил. Спасибо за вашу помощь. – Bromic

Смежные вопросы