php数据库数据保存

时间:2016-02-05 16:18:59

标签: php mysql database

我正在使用php进行注册表单,但是当我点击注册按钮时,它会在电子邮件和密码字段中保存1,1而不是给出电子邮件和密码。

  <?php
include("connection.php")
?>
<?php

$email=isset($_POST['email']);
$password=isset($_POST['password']);

if(isset($_POST['register']))
{
    $q= "insert into admin (email, password) values ('$email', '$password')";
    $qr=mysqli_query($con, $q);
    if($qr)
    {
        echo "data added sucessfully";
    }
    else
    {
        die();
    }
}

?>

<!DOCTYPE html>
<html>
<head>
    <title>Log in</title>
</head>
<body>
<form method="post" action="">
<input type="email" name="email">
<br>
<input type="password" name="password">
<br>
<button type="submit" name="register" value="register">register</button>
</form>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

它在数据库中输入1的原因是因为POST数组的isset()

旁注:您可能打算使用三元运算符http://php.net/manual/en/language.operators.comparison.php

RTM:http://php.net/manual/en/function.isset.php bool isset ( mixed $var [, mixed $... ] ),返回布尔值。

$email=isset($_POST['email']);
$password=isset($_POST['password']);

您需要删除isset()

$email=$_POST['email'];
$password=$_POST['password'];

然后检查它们是否为空。

if(!empty($_POST['email']) && !empty($_POST['password']) )

并放在if(isset($_POST['register'])){...}

我不知道你为什么要将代码嵌入到textarea中 修改:我看到你在编辑中删除了它。

还要确保您的列类型能够存储字符串而不是整数,并且足够长以容纳存储的数据。

您目前的代码向SQL injection开放。使用prepared statementsPDOprepared statements

<强>密码

我还注意到您可能以纯文本格式存储密码。如果您打算使用此功能,则不建议这样做。

使用以下其中一项:

其他链接:

关于列长的重要说明:

如果您决定使用password_hash()或隐藏,请务必注意,如果您当前的密码列的长度低于60,则需要将其更改为(或更高)。手册建议长度为255。

您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。

<强>脚注:

您还应该根据查询检查错误。

和错误报告是另一个可以帮助你的人。

答案 1 :(得分:1)

http://php.net/manual/en/function.isset.php

Isset函数返回一个布尔值,尝试:

if(isset($_POST['email'])){
    $email=$_POST['email'];
}
if(isset($_POST['password'])){
    $password=$_POST['password'];
}

答案 2 :(得分:0)

我认为应该是下面的内容

$ email = isset($ email)? $ email:&#34;&#34; $ password = isset($ password)? $ password:&#34;&#34;