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