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

jtjikinw  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(307)

我犯了个错误
未定义变量:公司名称。
但有些字段被插入到数据库中。

<?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>";
        }
    }
?>
mklgxw1f

mklgxw1f1#

首先, mysql_* 从PHP5.5开始,函数就被弃用了,从PHP7.0开始,函数就被完全删除了。
保持最新的和好的,现在你经常要更新的东西以及php。知道 mysql_* 函数已被弃用(不在活动开发中),我们不应该再使用它们(如果您更新了php,我们甚至不能再使用它们)。无论如何回到你不应该使用的地方 mysql_* 函数,尤其是现在你对编程还不是很熟悉,因为有一天你必须更新你的php,这意味着你必须修改你的所有代码。
截至以下代码:
这是 mysqli_* mysqli.php
我已经添加了一个db连接检查检查,如果这是真正的工作,因为你没有检查连接。因为即使没有连接,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);
}
}

?>
t9aqgxwy

t9aqgxwy2#

首先,mysql被弃用了。不要使用mysql。使用mysqli或pdo。
在给定的代码中,
在$query语句后添加条件以获得确切的错误。

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

czq61nw13#

做一件事,你就很容易调试了-
改变这个

$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提供给您的问题,并相应地更新脚本中的查询。

e1xvtsh3

e1xvtsh34#

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

<?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");

?>

如果不想使用prepared语句,请执行以下操作:

<?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");

?>

相关问题