sqlstate 42000语法错误可能的table问题?

7nbnzgx9  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(364)

sql查询在表中插入数据时遇到语法错误。啊,语法错误,最没用的错误!!
使用从php修改的代码,使用mysqli和pdo方法将数据插入mysql。例如。:

<?php
$servername = "localhost";
$username = "4w_write";
$password = "GjByhJzrQueHgTzw";
$dbname = "4w_test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO 4w (email) VALUES ($email)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

把它简化为一个不使用关键字的变量,我很确定问题出在我的表上。
sql查询:

INSERT INTO 4w (email) VALUES (myemail@gmail.com)

错误:
错误:插入4w(电子邮件)值(myemail@gmail.com)sql语法有错误;在第1行的“@gmail.com”附近查看与您的mariadb服务器版本相对应的手册,以获取正确的语法
sql表(4w):


# Name                 Type       Default

1   id [Primary,Index]   int(11)
2   email                varchar(255)
3   whatIs               tinytext
4   whereIs              text
5   whattodo             text
6   imageURL             text
7   whenRep              timestamp  CURRENT_TIMESTAMP
ogq8wdun

ogq8wdun1#

看不到问题,缺少引号。。。。原始代码:

$sql = "INSERT INTO 4w (email) VALUES ($email)";

固定代码:

$sql = "INSERT INTO 4w (email) VALUES ('$email')";
c2e8gylq

c2e8gylq2#

电子邮件值是一个字符串,因此需要用引号将其括起来:

$sql = "INSERT INTO 4w (email) VALUES ('$email')";

或者,更好的方法是使用一个准备好的语句并绑定它的值。

相关问题