无法在SQLite表中插入字符串,但可以编号

时间:2011-06-08 13:24:38

标签: php sqlite

naybody能告诉我这意味着什么

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";
    }
}

4 个答案:

答案 0 :(得分:4)

你不需要转

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

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

MySQL / PHP接受没有's的数字,但不接受字符串。此外,您可能希望使用默认的PHP函数来转义输入。

答案 1 :(得分:1)

你必须在VALUES

中使用'..'和字符串
 $db->query("INSERT INTO users(first_name,last_name,email,username,password,privilege) VALUES('$first_name','$last_name','$email','$username','$password','$privilege');");

答案 2 :(得分:1)

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

在变量周围缺少'。可能想先逃避价值观。 调试提示:将查询放入变量中,回显该变量并尝试它。

答案 3 :(得分:0)

您是否尝试使用SqliteManager插入数据?我的意思是你知道这个问题是由php脚本或数据库造成的。如果您尝试在sqlitemanager上运行查询。同时尝试使用“s”和(“)not(')