通过php执行基于变量的sqlite3更新

时间:2016-03-30 02:27:15

标签: php sqlite

我试图通过PHP脚本对Sqlite3数据库进行更新,但是我遇到了一些我不理解的错误。

  

PHP警告:SQLite3 :: prepare():无法准备语句:1,没有这样的列::第16行的C:\ UwAmp \ www \ save.php中的列,referer:http://localhost/Canvas.html

     

PHP致命错误:未捕获错误:在C:\ UwAmp \ www \ save.php中调用布尔成员函数bindParam():17 \ n堆栈跟踪:\ n#0 {main} \ n抛出第17行的C:\ UwAmp \ www \ save.php,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();

第16行是$ db-> prepare语句。 我试图研究这个,但我没有运气。感谢您提供任何帮助。

1 个答案:

答案 0 :(得分: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();