2011-06-08 112 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(')