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

7d7tgy0s  于 2022-11-30  发布在  SQLite
关注(0)|答案(4)|浏览(207)

没有人能告诉我这是什么意思吗

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

63lcw9qa1#

你不需要

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

进入

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

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

alen0pnh

alen0pnh2#

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

变量前后缺少'。可能需要先转义值。调试提示:将您的查询放入一个变量中,回显该变量并进行尝试。

xbp102n0

xbp102n03#

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

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

ljsrvy3e4#

您是否尝试使用SqliteManager插入数据?我的意思是,您是否知道问题是由php脚本或数据库引起的?如果您尝试在sqliteManager上运行查询,也请尝试使用“s”和(“)而不是(')

相关问题