繁体   English   中英

为什么我不能将文件上传到我的数据库?

[英]Why I can not upload file to my database?

我需要创建一个包含一些信息的公司表格(如下所示),但每次我想上传新行时,我都会在每一列中得到 1。

所以,我想知道我应该如何处理我的代码?

        <?php 
        include('mysql.php');

        if ($_POST) {
                 $companyName = isset($_POST['cname']);
                 $address = isset($_POST['address']);
                 $phoneNubmber = isset($_POST['phoneNubmber']);

                      $result = $connection->query("INSERT INTO `companies` 
                      (`name`, `email`, `phone`) VALUES('$cegnev ', 
                     '$address', '$pn')");

    header('Location: http://localhost/phptest/test.php');

    mysqli_close($connection);
}
?>

<!DOCTYPE html>
<html>
    <head>
        <title>Form</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" tpe="text/css" href="urlapcss.css">
    </head>
    <body>
    <div id="container">
        <form id="reg" action="test.php" method="post">
            <fieldset>
                <legend>Form</legend>
                <ol>
                <li>
                        <label for="cname">Name of the company<em>*</em></label>
                        <input id="cname" type="text"  name="cname"/>
                    </li><li>
                        <label for="address">Email<em>*</em></label>
                        <input id="address" type="text"  name="address"/>
                    </li><li>
                        <label for="phoneNubmber">Phone number<em>*</em></label>
                        <input id="phoneNubmber" type="text" name="phoneNubmber" />
                    </li>
                </ol>
            </fieldset>
            <input type="submit" value="OK"/>
        </form>
    </div>
    </body>
</html>

这是桌子。

顺便说一句,mysql.php,如果您想知道 this.php 文件包含什么:

<?php
$host = "localhost";
$userName = "root";
$password = "";
$DBname = "hgeza06";

$connection = new mysqli($host, $userName, $password, $DBname);
if ($connection->connect_error) {
    die("Error");
} else {
    echo "Succes!";
}
?>

isset($_POST['cname']) - 如果你有$_POST['cname']将返回1或如果你没有它则返回0

更好的方法是:

$companyName = isset($_POST['cname']) ? $_POST['cname'] : '' ; //add a empty value if is not filled
$address = isset($_POST['address']) ? $_POST['address'] : '';
$phoneNubmber = isset($_POST['phoneNubmber']) ? $_POST['phoneNubmber'] : '';

对于初学者,您的变量名称不一致。 您创建一个名为$companyName的变量,然后尝试将其用作$cegnev 您的$phoneNubmber变量也存在同样的问题(它本身也包含一个错字)。 使用您定义的变量。

一旦纠正...这将返回 boolean (true/false) 值:

isset($_POST['cname'])

所以你实际上是在你的数据库中插入true值和false值,它们被解释为10 获取实际值:

$companyName = $_POST['cname'];

使用isset()有条件地确定如果值已设置或未设置,您想要做什么,但不要使用它来尝试获取值本身。

最后,这很重要,您的代码对SQL 注入开放 (或者无论如何,它只是巧合和错误,它目前不对它开放。)这里有很多关于如何处理的信息。 这很重要,因为 SQL 注入漏洞既是一个主要的安全漏洞(因此是允许继续的坏习惯),也是代码中非常常见的错误和意外行为的来源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM