2011-06-08 147 views
2

能naybody告訴我這是什麼意思不能在SQLite表中插入字符串,但可以數字

INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES('s',1,1,1,1,1); 

但是當我嘗試

INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES(1,1,1,1,1,1); 

它的工作原理。我不能插入字符串?哪裏不對 ? 我的SQLite表看起來像

CREATE TABLE users (
    id   integer PRIMARY KEY AUTOINCREMENT NOT NULL, 
    first_name varchar(50), 
    last_name varchar(50), 
    email  varchar(50), 
    username varchar(50), 
    password varchar(50), 
    privilege varchar(50) 
); 

和我的PHP函數看起來像

public function insert_user($first_name, $last_name, $email, $username, $password, $privilege) { 
    try { 
     $db = new SQLite3($this->db_path); 

     $db->query("INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES($first_name,$last_name,$email,$username,$password,$privilege);"); 

     $last_id = $db->lastInsertRowID(); 
     $db->close(); 
     return $last_id; 
    } catch (Exception $e) { 
     echo 'Exception caught: ', $e->getMessage(), "\n"; 
    } 
} 

回答

1
$db->query("INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES('$first_name','$last_name','$email','$username','$password','$privilege');") 

失蹤'圍繞變量。可能希望首先逃避價值。 調試提示:將你的查詢放入一個變量中,回顯該變量並嘗試。

1

你必須使用 '..' 與字符串VALUES

$db->query("INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES('$first_name','$last_name','$email','$username','$password','$privilege');"); 
4

不要你需要把

 VALUES($first_name,$last_name,$email,$username,$password,$privilege 

 VALUES('$first_name','$last_name','$email','$username','$password','$privilege') 

的MySQL/PHP沒有「的接受數字,但不是字符串。另外,您可能希望使用默認的PHP函數來轉義您的輸入。

0

您是否嘗試使用SqliteManager插入數據?我的意思是你知道這個問題是由PHP腳本或數據庫造成的。如果您嘗試在sqlitemanager上運行您的查詢。還嘗試使用「s」(())not(')