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

Php 为什么我不能上传文件到我的数据库?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我需要创建一个关于公司的表单,其中包含一些信息(如下所示),但每次我想上传新行时,每列都会得到1分 所以,我想知道我应该如何处理我的代码 <?php include('mysql.php'); if ($_POST) { $companyName = isset($_POST['cname']); $address = isset($_POST['address']);

我需要创建一个关于公司的表单,其中包含一些信息(如下所示),但每次我想上传新行时,每列都会得到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>
isset($\u POST['cname'])
-如果您有
$\u 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
变量也存在同样的问题(该变量本身也包含输入错误)。使用您定义的变量

一旦纠正了。。。这将返回一个布尔值(真/假):

因此,您实际上是在数据库中插入
true
false
值,这些值被解释为
1
0
。获取实际值:

$companyName = $_POST['cname'];
使用
isset()
有条件地确定在设置或未设置值时要执行的操作,但不要使用它来尝试获取值本身


最后,这很重要,您的代码对用户开放。(或者说无论如何都将如此,仅仅是巧合和错误,它目前还没有对它开放。)关于如何应对这一点,还有很多问题需要解决。这一点很重要,因为SQL注入漏洞既是一个主要的安全漏洞(因此是一个允许继续存在的坏习惯),也是代码中错误和意外行为的常见来源。

isset
返回一个布尔值。谢谢,我对isset的功能有点困惑。您能告诉我为什么不能添加,我的桌子上只有一排?@GézaHorváth:不清楚你的意思。你能详细解释一下吗?在数据库中,我不能上传,只有一行信息。@GézaHorváth:你说的“不能上传一行”到底是什么意思还不清楚。但这听起来确实像是一个单独的问题,值得单独提出一个问题,特别是因为这个问题已经有了一个公认的答案。
isset($_POST['cname'])
$companyName = $_POST['cname'];