Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 插入到不起作用的语句中_Php_Mysql_Database_Mysqli - Fatal编程技术网

Php 插入到不起作用的语句中

Php 插入到不起作用的语句中,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我对PHP/SQL编码相当陌生,我完全不明白为什么这种编码不起作用。数据库本身是由我的大学制作的,所以我只是想连接到它(我不确定我是否能透露细节,所以我把连接编码拿了出来。我是一个基础水平,所以沉重的技术语言将越过我的头,但任何建议将不胜感激 我正在尝试将链接到PHP文件的表单的结果插入数据库表。我不确定是否需要在PHP文件中放入任何内容来说明这一点?但这是我的代码: <?php $conn = new mysqli($servername, $username, $password, $

我对PHP/SQL编码相当陌生,我完全不明白为什么这种编码不起作用。数据库本身是由我的大学制作的,所以我只是想连接到它(我不确定我是否能透露细节,所以我把连接编码拿了出来。我是一个基础水平,所以沉重的技术语言将越过我的头,但任何建议将不胜感激

我正在尝试将链接到PHP文件的表单的结果插入数据库表。我不确定是否需要在PHP文件中放入任何内容来说明这一点?但这是我的代码:

<?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好的一点,在所有其他的一点之后,我完全忘记了