Php 插入到不起作用的语句中
我对PHP/SQL编码相当陌生,我完全不明白为什么这种编码不起作用。数据库本身是由我的大学制作的,所以我只是想连接到它(我不确定我是否能透露细节,所以我把连接编码拿了出来。我是一个基础水平,所以沉重的技术语言将越过我的头,但任何建议将不胜感激 我正在尝试将链接到PHP文件的表单的结果插入数据库表。我不确定是否需要在PHP文件中放入任何内容来说明这一点?但这是我的代码:Php 插入到不起作用的语句中,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我对PHP/SQL编码相当陌生,我完全不明白为什么这种编码不起作用。数据库本身是由我的大学制作的,所以我只是想连接到它(我不确定我是否能透露细节,所以我把连接编码拿了出来。我是一个基础水平,所以沉重的技术语言将越过我的头,但任何建议将不胜感激 我正在尝试将链接到PHP文件的表单的结果插入数据库表。我不确定是否需要在PHP文件中放入任何内容来说明这一点?但这是我的代码: <?php $conn = new mysqli($servername, $username, $password, $
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
// Connect to database
$sql = "SELECT runnerid, position, eventid, date, finishtime, categoryid, agegrade, pb FROM Results";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
{
echo "<table>";
echo '<table border=1><tr><th>Runner ID</th><th>Position</th><th>Event ID</th><th>Date</th><th>Finish Time</th><th>Category ID</th><th>Age Grade</th><th>Personal Best</th></tr>';
echo "<tr><td>";
echo $row['runnerid'];
echo "</td><td>";
echo $row['position'];
echo "</td><td>";
echo $row['eventid'];
echo "</td><td>";
echo $row['date'];
echo "</td><td>";
echo $row['finishtime'];
echo "</td><td>";
echo $row['categoryid'];
echo "</td><td>";
echo $row['agegrade'];
echo "</td><td>";
echo $row['pb'];
echo "</td>
</tr>";
}
echo "</table>";
}
} else {
echo "0 results";
}
$sql = "INSERT INTO Results VALUES ('$_POST[runnerid]', '$_POST[position]' '$_POST[eventid]' '$_POST[date]' '$_POST[finishtime]' '$_POST[categoryid]' '$_POST[agegrade]' '$_POST[pb]')";
$result = $conn->query($sql);
if (!$result) {
die('Could not insert data' . mysql_error());
}
$conn->close();
?>
兄弟,在每个值之后,您都忘记了。如果您在sql查询中直接从post获取任何值,则该值将介于“.$\u post.”或“.$\u post.”之间。有一个条件适合您,请参见下面的查询,您将理解
祝你一切顺利
如果有任何问题,请评论plz。让我知道我会解决
它必须如下所示:
$sql = "INSERT INTO Results VALUES ('".$_POST[runnerid]."', '".$_POST[position]."', '".$_POST[eventid]."', '".$_POST[date]."', '".$_POST[finishtime]."', '".$_POST[categoryid]."', '".$_POST[agegrade]."', '".$_POST[pb]."')";
兄弟,您忘记了,在每个值之后。如果您在sql查询中直接从post中获取任何值,则该值将介于“.$\u post.”或“.$\u post.”之间。有一个条件适合您,请参见下面的查询,您将理解
祝你一切顺利
如果有任何问题,请评论plz。让我知道我会解决
它必须如下所示:
$sql = "INSERT INTO Results VALUES ('".$_POST[runnerid]."', '".$_POST[position]."', '".$_POST[eventid]."', '".$_POST[date]."', '".$_POST[finishtime]."', '".$_POST[categoryid]."', '".$_POST[agegrade]."', '".$_POST[pb]."')";
如果您很好地缩进代码,您将更容易看到错误
- 您有不匹配的花括号
- 您的查询语法错误,即参数之间缺少逗号
- 如果在变量名周围使用
{}
,则变量将更好地替换为“”
字符串
- 您需要将该
移动到while循环之外,并删除第二个错误
- 另见@miken32答案,建议使用绑定变量
以下是一些建议的修复方法:-
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
// Connect to database
$sql = "SELECT runnerid, position, eventid, date,
finishtime, categoryid, agegrade, pb FROM Results";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
echo '<table border="1">
<tr><th>Runner ID</th><th>Position</th><th>Event ID</th>
<th>Date</th><th>Finish Time</th><th>Category ID</th>
<th>Age Grade</th><th>Personal Best</th>
</tr>';
while($row = $result->fetch_assoc()) {
{
echo "<tr><td>";
echo $row['runnerid'];
echo "</td><td>";
echo $row['position'];
echo "</td><td>";
echo $row['eventid'];
echo "</td><td>";
echo $row['date'];
echo "</td><td>";
echo $row['finishtime'];
echo "</td><td>";
echo $row['categoryid'];
echo "</td><td>";
echo $row['agegrade'];
echo "</td><td>";
echo $row['pb'];
echo "</td>
</tr>";
}
echo "</table>";
// } remove extra barckey
} else {
echo "0 results";
}
$sql = "INSERT INTO Results
VALUES ('{$_POST['runnerid']}', '{$_POST['position']}',
'{$_POST['eventid']}', '{$_POST['date']}',
'{$_POST['finishtime']}' '{$_POST['categoryid']}',
'{$_POST['agegrade']}', '{$_POST['pb']}')";
$result = $conn->query($sql);
if (!$result) {
die('Could not insert data' . $conn->error);
}
$conn->close();
?>
如果您很好地缩进代码,您将更容易看到错误
- 您有不匹配的花括号
- 您的查询语法错误,即参数之间缺少逗号
- 如果在变量名周围使用
{}
,则变量将更好地替换为“”
字符串
- 您需要将该
移动到while循环之外,并删除第二个错误
- 另见@miken32答案,建议使用绑定变量
以下是一些建议的修复方法:-
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
// Connect to database
$sql = "SELECT runnerid, position, eventid, date,
finishtime, categoryid, agegrade, pb FROM Results";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
echo '<table border="1">
<tr><th>Runner ID</th><th>Position</th><th>Event ID</th>
<th>Date</th><th>Finish Time</th><th>Category ID</th>
<th>Age Grade</th><th>Personal Best</th>
</tr>';
while($row = $result->fetch_assoc()) {
{
echo "<tr><td>";
echo $row['runnerid'];
echo "</td><td>";
echo $row['position'];
echo "</td><td>";
echo $row['eventid'];
echo "</td><td>";
echo $row['date'];
echo "</td><td>";
echo $row['finishtime'];
echo "</td><td>";
echo $row['categoryid'];
echo "</td><td>";
echo $row['agegrade'];
echo "</td><td>";
echo $row['pb'];
echo "</td>
</tr>";
}
echo "</table>";
// } remove extra barckey
} else {
echo "0 results";
}
$sql = "INSERT INTO Results
VALUES ('{$_POST['runnerid']}', '{$_POST['position']}',
'{$_POST['eventid']}', '{$_POST['date']}',
'{$_POST['finishtime']}' '{$_POST['categoryid']}',
'{$_POST['agegrade']}', '{$_POST['pb']}')";
$result = $conn->query($sql);
if (!$result) {
die('Could not insert data' . $conn->error);
}
$conn->close();
?>
还没有人提到的是,根据您的代码,我可以通过一个请求轻松地删除您的整个数据库。以下是您需要做的事情,以防止:
:
绑定变量与查询分开发送到服务器,因此不会干扰查询。解析语句模板后,服务器在执行时直接使用这些值。绑定参数不需要转义,因为它们永远不会直接替换到查询字符串中。必须向服务器提供提示r为绑定变量的类型,创建适当的转换
还没有人提到的是,考虑到您的代码,我可以通过一个请求轻松地删除您的整个数据库。以下是您需要做的工作,以防止:
:
绑定变量与查询分开发送到服务器,因此不会干扰查询。解析语句模板后,服务器在执行时直接使用这些值。绑定参数不需要转义,因为它们永远不会直接替换到查询字符串中。必须向服务器提供提示r为绑定变量的类型,创建适当的转换
您是否从die()
语句中得到错误?您的查询中的值之间缺少逗号。在runnderid
后面有一个逗号,但其他的都没有。请参考以下链接并将其应用于您的代码。您还将MySQL函数与MySQL\u error()混合使用
应该读作mysqli\u error($conn)
。不发布与此相关的HTML表单,会让我们猜测。检查错误。值得一提的是,您应该使用PDO而不是mysqli;它更便于携带和使用。您是否从die()中得到错误
语句?查询中的值之间缺少逗号。在runnderid
后面有一个逗号,但其他值都没有。请查阅以下链接,并将其应用到代码中。您还将MySQL函数与MySQL\u error()
混合,后者应读作mysqli\u error($conn)
。如果不发布与此相关的HTML表单,我们都会猜测。请检查错误。值得一提的是,您应该使用PDO而不是mysqli;它更易于移植和使用。如果不执行“{$\u POST[runnerid]},$\u POST变量将不会被替换到该字符串中“,
@riggsfully双引号字符串可以很好地解析一维数组索引。@miken32不在我使用过的任何PHP上,尤其是在数组索引周围没有单引号的情况下,即$\u POST[runnerid]
应该是$\u POST['runnerid']
@riggsfully@miken32 Ooo,又是一个好日子,我学到了一些我以前完全错过的东西。感谢$\u POST变量不会被替换到该字符串中,除非执行'{$\u POST[runnerid]}“,
@riggsfully双引号字符串可以很好地解析一维数组索引。@miken32不在我使用过的任何PHP上,尤其是在数组索引周围没有单引号的情况下,即$\u POST[runnerid]
应该是$\u POST['runnerid']
@riggsfully@miken32 Ooo,又是美好的一天,我学到了一些我以前完全错过的东西。感谢好的一点,在所有其他的一点之后,我完全错过了UV+1好的一点,在所有其他的一点之后,我完全忘记了