HTML格式的PHP表单,不会连接

时间:2016-04-23 19:00:25

标签: php database forms

所以我对PHP和数据库都很新,所以请放纵! :)

我在HTML文件中创建了一个简单的表单:

<h1> Créez votre compte ici</h1>
<form action="form.php" method="post">
<p id="textdone"> </p>
<input type= "text" name="Surname" autocomplete="on" placeholder="Votre nom" required/> <br> <br>
<input type= "text" name="Name" autocomplete="on" placeholder ="Votre prenom" required/> <br> <br>
<input type= "email" name="Email" autocomplete="on" placeholder ="Adresse mail" required/> <br><br>
<input type= "text" name="Pseudo" autocomplete="off" placeholder ="Votre pseudo" maxlength="20" required/> <br>
<p>Ajoutez une photo de profil: <input type= "file" /> <br><br></p>
<p> Entrez un mot de passe: <input type="Password" name="Passwird" autocomplete="off"  maxlength="20" required placeholder="Mot de passe"/> <br><br>
Validez votre mot de passe: <input type="password1" autocomplete="off"  maxlength="20" required placeholder="Mot de passe"/> <br><br>
    </p>
<input type="submit" value="Soumettre"/>
</form>
    </body>

所以我的动作文件,form.php文件保存在同一个文件夹中(我确定)如下:

<?php
define('DB_NAME', 'Matchy');
define('DB_USER', 'root@localhost');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link){
    die('Could not connect: ' .mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected){
    die('Can\'t use' . DB_NAME. ':'. mysql_error());
}
echo 'Successful connection';

$surname = $_POST['Surname'];
$name = $_POST['Name'];
$email = $_POST['Email'];
$pseudo = $_POST['Pseudo'];
$password = $_POST['Password'];

$sql = "INPUT INTO users (Name) VALUES ('$name')";
$sql1 = "INPUT INTO users (Surname) VALUES ('$surname')";
$sql2 = "INPUT INTO users (Pseudo) VALUES ('$pseudo')";
$sql3 = "INPUT INTO users (Email) VALUES ('$email')";
$sql4 = "INPUT INTO users (Password) VALUES ('$password')";

if (!mysql_query($sql)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql1)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql2)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql3)) {
    die ('Error: ' .mysql_error());
}
if (!mysql_query($sql4)) {
    die ('Error: ' .mysql_error());
}

mysql_close();
?>

但每次我填写表格并点击提交时,我都会收到以下消息: 无法发布/form.php。

我从以下视频(https://www.youtube.com/watch?v=wp6Ngpk5XiY&index=2&list=PL530D33D6E548481F)获取此代码,这非常有用。但我真的无法连接。我在我的数据库上创建了我的表,包含所有正确的列。 我使用phpMyAdmin。

非常感谢能够提供帮助的人! :)

2 个答案:

答案 0 :(得分:2)

让我们在这里概述错误。

INPUT INTO不是有效的MySQL表达式,语法为INSERT INTO

然后您的name="Passwird"$_POST['Password']不匹配,错误报告http://php.net/manual/en/function.error-reporting.php会告诉您。

然后如另一位成员的评论中所述:

  

<input type="password1" autocomplete="off" maxlength="20" required placeholder="Mot de passe"/>这个也没有提供任何爱。没有输入类型密码1 - Hendra Nucleo

应该是password而不是password1

最好使用正确的参考文献http://dev.mysql.com/doc/en/insert.html并使用PDOprepared statements切换到mysqli_* with prepared statements,因为mysql_*函数已弃用。官方手册是最好的参考。

  • 他们不会引导你错误; - )

那个教程可能没有提到SQL injection的任何内容,所以这本身就是一个很好的阅读。

它也没有提到密码的任何内容。

我注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:

关于列长的重要说明:

如果您决定使用password_hash()或兼容包(如果PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前的密码列的长度低于60 ,它需要更改为(或更高)。手册建议长度为255。

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

修改

整个代码块可以很容易地在几行中完成,例如对同一个表进行如此多的调用:

$sql = mysql_query("

        INSERT INTO users (Name, Surname, Pseudo, Email, Password) 
        VALUES ('$name', '$surname', '$pseudo', '$email', '$password')

        ");

if($sql){
echo "Success!";
}

else { "Error: " . mysql_error(); }

答案 1 :(得分:0)

是的,@ gmiley提出了一个很好的问题,检查是否可以使用输入,而是使用insert查询和单个语句中的所有值。对于语法,您可以参考以下链接:http://www.w3schools.com/sql/sql_insert.asp