无法使用php在mysql上插入数据

时间:2018-05-05 06:33:59

标签: php html mysql

我收到错误

  

未定义的变量:company_name。

但有些字段会插入数据库中。

<?php
    $con=mysqli_connect("localhost","root","","vdl");
    // Check connection
    if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
        $Company_name = $_POST['company_name'];
        $since = $_POST['since'];
        $strength = $_POST['strength'];
        $head_quarter = $_POST['head_quarter'];
        if($company_name !=''||$since !=''){
            mysqli_query($con,"insert into digital_library(company_name, since, strength, head_quarter) values ('$company_name', '$since', '$strength', '$head_quarter')");
            mysqli_close($con);
        }
        else{
            echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";
        }
    }
?>

4 个答案:

答案 0 :(得分:1)

首先,自PHP 5.5起,mysql_*函数已弃用,自PHP 7.0起已完全删除。

了解最新的有关新的和好的,现在您需要更新内容以及PHP。知道mysql_*函数已被弃用(不在积极开发中),我们不应再使用它们了(如果你已经更新了php,我们甚至不能再使用它们了)。无论如何,你不应该使用mysql_*函数,特别是现在你不是新的编程,因为你将来必须更新你的php意味着你将不得不改变你的所有代码。

截至以下代码:

这是mysqli_* mysqli.php

我已经添加了一个数据库连接检查,检查是否实际有效,因为你没有检查连接。因为即使没有那个连接工作,if循环仍然会返回你的回声。

mysqli_*中,您还必须在查询字符串中添加连接。

<?php
$con=mysqli_connect("localhost","root","","vd1");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
$company_name = $_POST['company_name'];
$since = $_POST['since'];
$strength = $_POST['strength'];
$head_quarter = $_POST['head_quarter'];
if($company_name !=''||$since !=''){

mysqli_query($con,"insert into digital_library(company_name, since, strength, head_quarter) values ('$company_name', '$since', '$strength', '$head_quarter')");

mysqli_close($con);
}
}



?>

答案 1 :(得分:0)

首先,不推荐使用mysql。不要使用mysql。使用mysqli或pdo。

在您给定的代码中,

在$ query语句后添加条件以获得确切的错误。

if (!$query) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    die($message);
}
else {
   echo "<br/><br/><span>Data Inserted successfully...!!</span>";
}

答案 2 :(得分:0)

您应该跟踪可能发生的所有错误。我建议使用准备好的声明,试试这个:

<?php
$sql = new mysqli("localhost", "root", "", "vdl");
if($sql->connect_errno)
    return printf("MySQL Connection Error #%d: %s", $sql->connect_errno, $sql->connect_error);

// I'd recommend to not use $_POST['submit'], it'd be better to check all the fields (company_name, since, strength, head_quarter) using the strlen() function
// for example: if(strlen($company = $_POST["company_name"]) && strlen($since = $_POST["since"])) ... etc.
if(isset($_POST["submit"]))
{

    if(!$sm = $sql->prepare("INSERT INTO `digital_library` (`company_name`, `since`, `strength`, `head_quarter`) VALUES (?, ?, ?, ?)"))
        return printf("Unable to prepare statement. Error #%d: %s", $sm->errno, $sm->error);

    if(!$sm->bind("ssss", $_POST["company_name"], $_POST["since"], $_POST["strength"], $_POST["head_quarter"]))
        return printf("Unable to bind parameters. Error #%d: %s", $sm->errno, $sm->error);

    if(!$sm->execute())
        return printf("MySQL Query Error #%d: %s", $sm->errno, $sm->error);

    printf("The query has successfully executed!");

} else
    printf("There's nothing to see, get outta here");

?>

如果您不想使用预备声明,请执行以下操作:

<?php
$sql = new mysqli("localhost", "root", "", "vdl");
if($sql->connect_errno)
    return printf("MySQL Connection Error #%d: %s", $sql->connect_errno, $sql->connect_error);

if(
    strlen( $company = $sql->real_escape_string($_POST["company_name"]) )
    && strlen( $since = $sql->real_escape_string($_POST["since"]) )
    && strlen( $strength = $sql->real_escape_string($_POST["strength"]) )
    && strlen( $head_quarter = $sql->real_escape_string($_POST["head_quarter"]) )
) {

    $query = sprintf("INSERT INTO `digital_library` (`company_name`, `since`, `strength`, `head_quarter`) VALUES ('%s', '%s', '%s', '%s')", $company, $since, $strength, $head_quarter);

    if(!$q = $sql->query($query))
        return printf("MySQL Query Error #%d: %s", $sql->errno, $sql->error);

    printf("The query has successfully executed!");

} else
    printf("There's nothing to see, get outta here");

?>

答案 3 :(得分:-1)

做一件事你很容易调试 -

更改此

$query = mysql_query("insert into digital_library(company_name, since, strength, head_quarter) values ('$company_name', '$since', '$strength', '$head_quarter')");

echo "<br/><br/><span>Data Inserted successfully...!!</span>";

  echo "insert into digital_library(company_name, since, strength, head_quarter) values ('$company_name', '$since', '$strength', '$head_quarter')";

现在,当您提交时,您将获得原始查询作为回应。

现在手动在phpmyadmin中运行此查询并查看结果。更正phpmyadmin为您提供的问题并相应地更新您的脚本中的查询。