好的,首先,我是PHP和MySQL的新手,所以如果我要问一些愚蠢的问题,我很抱歉: 我试图创建的页面有4个表单和一个提交按钮,我想在点击提交时将所有这些信息发送到数据库,但我有这些错误:
Notice: Undefined index: submit in C:\XAMPP\htdocs\SQLtesting\index.php on line 37
Notice: Undefined variable: sql in C:\XAMPP\htdocs\SQLtesting\index.php on line 45
Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45
以下是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="abcde" />
<title>Untitled 2</title>
</head>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="User">
First Name:
<input type="text" name="firstName" /> <br />
Last Name:
<input type="text" name="lastName" /> <br />
E-mail:
<input type="text" name="email" /> <br />
Phone Number:
<input type="text" name="phoneNumber" /> <br />
<input type="submit" name="submit" />
</form>
<?php
$con=mysqli_connect("localhost","root",'',"test_1");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isset($_POST['submit'])){
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$phoneNumber = $_POST['phoneNumber'];
}
if($_POST['submit'])
{
$sql="INSERT INTO test_1_1(id,firstName, lastName, email, phoneNumber)
VALUES
('','$_POST[firstName]','$_POST[lastName]','$_POST[email]', '$_POST[phoneNumber]')";
echo "1 record added";
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
?>
</body>
</html>
我也注意到如果我写
$sql="INSERT INTO test_1_1(id,firstName, lastName, email, phoneNumber)
VALUES
('','$_POST[firstName]','$_POST[lastName]','$_POST[email]', '$_POST[phoneNumber]')";
根本没有if条件我不会得到
Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45
错误但代码会在开头添加一个空行。
我正在使用XAMPP在本地计算机上运行它。
答案 0 :(得分:1)
在尝试运行查询之前,必须确保设置$ _POST ['submit']。尝试:
if(isset($_POST['submit'])){
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$phoneNumber = $_POST['phoneNumber'];
$sql = "INSERT INTO test_1_1 (id,firstName, lastName, email, phoneNumber)
VALUES ('','$firstName','$lastName','$email', '$phoneNumber')";
if (!mysqli_query($con,$sql)){
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}
顺便说一句,您的代码对SQL注入是开放的。您可以通过熟悉prepared statements来解决这个安全漏洞。
答案 1 :(得分:0)
可能性很高:
if($_POST['submit']) {}
返回false并且$ sql var未填充
尝试添加
var_dump($sql);
之前
if (!mysqli_query($con,$sql))
答案 2 :(得分:0)
Notice: Undefined index: submit in C:\XAMPP\htdocs\SQLtesting\index.php on line 37
这意味着$_POST['submit']
不存在。如果您不想收到警告,则应使用isset(...)
检查是否存在而不是直接使用它。
Notice: Undefined variable: sql in C:\XAMPP\htdocs\SQLtesting\index.php on line 45
由于$_POST['submit']
不存在,因此不执行if子句并且未填充$sql
,错误在这里是自解释的。
Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45
这意味着查询字符串($sql
未定义,因此默认为空字符串)为空。
答案 3 :(得分:0)
一切都与一切有关。首先 - 使用诸如var_dump之类的函数来转储$ _POST的内容。
我没有看到$ _POST ['submit']为空的原因,但我会为它添加一些值:
<input type="submit" name="submit" value="Hey!" />
检查条件和括号,这没有意义。见Wayne Whitty的回答是正确的。
我个人建议你使用一些php框架,尽管你花了更多的时间。它们通常包含很多示例,文档,它们通常旨在向您学习一些好习惯(编码风格......)。