Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入错误(不执行任何操作)_Php_Mysql_Sql Insert - Fatal编程技术网

Php MySQL插入错误(不执行任何操作)

Php MySQL插入错误(不执行任何操作),php,mysql,sql-insert,Php,Mysql,Sql Insert,嗨,我是mysql的新手,我正在尝试使用insert将一些数据插入数据库。数据是从HTML表单接收的 插入数据 $q = "INSERT INTO 'customers'('firstname', 'lastname', 'email') VALUES ('$first, '$last', '$email')"; mysqli_query($dbc, $q); $q = 'SELECT * FROM customers'; $r = mysqli_query($dbc, $q) OR die

嗨,我是mysql的新手,我正在尝试使用insert将一些数据插入数据库。数据是从HTML表单接收的

插入数据

$q = "INSERT INTO 'customers'('firstname', 'lastname', 'email') VALUES ('$first, '$last', '$email')";
mysqli_query($dbc, $q);
$q = 'SELECT * FROM customers';
$r = mysqli_query($dbc, $q)
OR die
(mysqli_error());

echo 'customers';

while($row = mysqli_fetch_array ($r, MYSQL_ASSOC))
{
echo '<br />' .$row['firstname']. $row['lastname']. $row['email'];
}
这就是插入函数

选择数据

$q = "INSERT INTO 'customers'('firstname', 'lastname', 'email') VALUES ('$first, '$last', '$email')";
mysqli_query($dbc, $q);
$q = 'SELECT * FROM customers';
$r = mysqli_query($dbc, $q)
OR die
(mysqli_error());

echo 'customers';

while($row = mysqli_fetch_array ($r, MYSQL_ASSOC))
{
echo '<br />' .$row['firstname']. $row['lastname']. $row['email'];
}
$q='SELECT*FROM customers';
$r=mysqli\u查询($dbc,$q)
要死
(mysqli_error());
回应“顾客”;
而($row=mysqli\u fetch\u数组($r,MYSQL\u ASSOC))
{
回显“
”。$row['firstname']。$row['lastname']。$row['email']; }
这就是SELECT函数以及我在php页面上显示数据库的方式

无论我在哪个教程或论坛上浏览,我似乎都不明白为什么我不能添加或显示结果


不要使用引号转义列名或表名,而是使用反勾号。引号是字符串分隔符

INSERT INTO `customers`(`firstname`, `lastname`, `email`) 
VALUES ('$first', '$last', '$email')

您应该考虑使用准备好的语句来防止SQL注入。但你绝对必须避开用户的输入。否则,您的输入也会产生语法错误


正如在另一个答案中指出的那样,您在第一个参数中也遗漏了一个引号。

尝试一下……您对$first有问题,您遗漏了引号

 $q = "INSERT INTO customers(firstname, lastname, email) VALUES ('$first', '$last', '$email')";
 mysqli_query($q);

编辑

通过将列名和表名引号括起来,可以在字符串中指定它们。使用下面的代码

$q = "INSERT INTO customers(firstname, lastname, email) 
VALUES ('$first', '$last', '$email')";
mysqli_query($dbc, $q);

希望这能帮助您检查您的数据库,看看这些记录是否真的添加了。另外,检查插入时是否没有任何错误。我正在做的项目不需要担心SQL注入。我发现了我在表单上使用POST时遇到的问题,但其他所有使用的内容现在都已全部排序。如果用户输入包含例如引号
,会发生什么情况?然后您有一个无效的SQL并抛出一个错误。
('firstname','lastname','email')
这些是列,不是字符串值。不应该有引语。