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


Cannot insert string in SQLite table but can numbers

能告诉我的意思吗

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

你不需要打开吗

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

进入

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

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

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

变量周围缺少一个"。可能要先转义值。调试技巧:将查询放入一个变量中,回显该变量并尝试。

您必须使用'..'VALUES 中有字符串

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

是否尝试使用SqliteManager插入数据?我的意思是,你知道这个问题是由php脚本或数据库引起的吗。如果您尝试在sqlitemanager上运行查询。同时尝试将"s"与(")而非(')一起使用