【问题标题】:PHP Insert Into error.. tried everything [closed]PHP插入错误..尝试了一切[关闭]
【发布时间】:2013-04-14 21:30:19
【问题描述】:

可能是一些愚蠢的事情,因为我的 MySQL PHP 知识太生疏了。我清理了所有我可以清理的错误,但我仍然无法写入我的数据库。任何人都可以阐明可能出了什么问题,因为它甚至不再打印错误了。谢谢:

<?php
$conn=mysql_connect("127.0.0.1","root","","pe_results"); 


        if (isset($_POST['Name'])) { 
        $Name = $_POST['Name'];
        }
        if (isset($_POST['Short'])) { 
        $Short = $_POST['Short'];
        }
        if (isset($_POST['Med'])) { 
        $Med = $_POST['Med'];
        }
        if (isset($_POST['Long'])) { 
        $Long = $_POST['Long'];
        }
        if (isset($_POST['VLong'])) { 
        $VLong = $_POST['VLong'];
        }
        if (isset($_POST['Extreme'])) { 
        $Extreme = $_POST['Extreme'];
        }
        if (isset($_POST['LJump'])) { 
        $LJump = $_POST['LJump'];
        }
        if (isset($_POST['HJump'])) { 
        $HJump = $_POST['HJump'];
        }
        if (isset($_POST['Shotputt'])) { 
        $Shotputt = $_POST['Shotputt'];
        }
        if (isset($_POST['Discuss'])) { 
        $Discuss = $_POST['Discuss'];
        }
        if (isset($_POST['Javelin'])) { 
        $Javelin = $_POST['Javelin'];
        }
        if (isset($_POST['Date'])) { 
        $Date = $_POST['Date'];
        }
        if (isset($_POST['Year'])) { 
        $Year = $_POST['Year'];
        }



            $sql="INSERT INTO results_main (Name, Short, Med, Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year)
            VALUES ('$Name', '$Short', '$Med', '$Long', '$VLong', '$Extreme', '$LJump', '$HJump', '$Shotputt', '$Discuss', '$Javelin', '$Date', '$Year')";

    $result = mysql_query($sql,$conn);
        if($result){
echo"<br/>Everythings been saved";
echo "<BR>";
echo "<a href='index.html'>Back to the main page</a>";
}

else {
echo 'Fatal Error, you information has not been saved';
}

// close connection 
mysql_close($conn);
?>

这里是更新:

查询是:INSERT INTO results_main (Name, Short, Med, Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) VALUES ('Chris Davern', '10:00', '20:00', '40:00', '80:00', '15:00', '100m', '10m', '15m', '50m', '400m', '2013-03-27 ', '9')

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) 附近使用正确的语法

【问题讨论】:

  • 当您在任何值中加上引号时会发生什么? mysql_error 会告诉你你的错误是什么。
  • 如果您将插入语句设为 $result = mysql_query($sql,$conn) 或 die(mysql_error());它说什么?不推荐使用 mysql* 函数
  • 您需要了解的三个要点:1) mysql_query 已弃用,2) 您的代码存在注入漏洞,3) 如果您要使用已弃用的 mysql_ API,那么调试失败查询的第一步是检查mysql_error()的输出
  • 大家好,user1048676,这样做回来说没有选择数据库?完全难住了。 datasage,这样做会打印:注意:未定义的变量:第 56 行 C:\xampp\htdocs\process.php 中的年份,尽管这是我将引号放入的值
  • 也很抱歉mark,我很久没用mysql了,我对mysqli还不够熟悉,所以尝试这样做

标签: php mysql database forms sql-insert


【解决方案1】:

这意味着您没有选择数据库。以下是我使用 mysql_ 函数连接的方式:

$host = "localhost";
$databasename = "pe_results";
$databaseusername = "root";
$databasepassword = "password";

$conn = mysql_connect("$host", "$databaseusername", "$databasepassword"); 
mysql_select_db("$databasename", $conn); 

$sql="INSERT INTO results_main (`Name`, `Short`, `Med`, `Long`, `VLong`, `Extreme`, `LJump`, `HJump`, `Shotputt`, `Discuss`, `Javelin`, `Date`, `Year`)
        VALUES ('$Name', '$Short', '$Med', '$Long', '$VLong', '$Extreme', '$LJump', '$HJump', '$Shotputt', '$Discuss', '$Javelin', '$Date', '$Year')";

$result = mysql_query($sql);

另外请注意更新了列名,因为 LONG 列名是 mysql 关键字,因此需要将其识别为列名而不是关键字。

然后你可以执行你的mysql_query。但是,就像我们之前提到的那样。 mysql_ 函数已弃用,不应再使用。

【讨论】:

  • 现在发生这种情况您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) 附近使用正确的语法
  • 在您实际尝试执行查询之前回显您的查询echo $sql;,并使用输出的内容编辑您的问题。
  • 现在在第 16 行说这是一个未定义的变量.. 我真的被卡住了
  • @ChrisConorDavern 我们需要查看正在尝试执行的查询。正如我所说,请回显您的 sql 查询并使用输出更新您的问题。
  • 抱歉,我该怎么做?感谢您的耐心等待,距离我上次做 sql 工作已经好几年了
【解决方案2】:

LONG 这个词是 MySQL 中的保留字...尝试将所有内容都用反引号括起来:

        $sql="INSERT INTO `results_main` (`Name`, `Short`, `Med`, `Long`, `VLong`, `Extreme`, `LJump`, `HJump`, `Shotputt`, `Discuss`, `Javelin`, `Date`, `Year`)
        VALUES ('$Name', '$Short', '$Med', '$Long', '$VLong', '$Extreme', '$LJump', '$HJump', '$Shotputt', '$Discuss', '$Javelin', '$Date', '$Year')";

代替

        $sql="INSERT INTO results_main (Name, Short, Med, Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year)
        VALUES ('$Name', '$Short', '$Med', '$Long', '$VLong', '$Extreme', '$LJump', '$HJump', '$Shotputt', '$Discuss', '$Javelin', '$Date', '$Year')";

【讨论】:

  • 糟糕...看起来@user1048676 已经涵盖了这一点。 ;)
【解决方案3】:

阅读php docmysql_connect 的第四个参数应该是一个布尔值,我猜它是你的数据库名称,所以你永远不会选择任何数据库。使用:

mysql_select_db("pe_results");

此代码可能已打印此错误。 :

$result = mysql_query($sql,$conn) or die (mysql_error ());

【讨论】:

  • 感谢您的回答,这让我回到了第一方,只是打印了我的错误消息,不完全确定在哪里放置 $result = mysql_query($sql,$conn) 或 die ( mysql_error());
【解决方案4】:

您在创建连接时没有选择数据库,因此您可以像这样指定它:

mysql_select_db("Put your Database Name Here");

【讨论】:

  • 仍然无法正常工作。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) 附近使用正确的语法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2016-05-14
  • 1970-01-01
  • 2019-09-19
相关资源
最近更新 更多