【问题标题】:How can I insert information to my MYSQL database from PHP for my website? [closed]如何为我的网站从 PHP 向我的 MYSQL 数据库中插入信息? [关闭]
【发布时间】:2014-12-23 07:50:13
【问题描述】:

我正在尝试在我的 PHP 文件中使用 INSERT INTO mySQL 方法在我的网站上创建一个新帐户。出于某种原因,数据库没有收到我发送给它的信息。我的问题是:如何使用 php 创建一个新帐户?我的 php 代码的第一部分只是验证从 html 页面提交的文本。

这是我的 php 代码,我用它来验证数据并将数据发送到通过 000webhost.com 托管的数据库。

 <?php

$host=""; // Host name (all these are correctly filled in in my code)
$username=""; // username
$password=""; // password
$db_name=""; // Database name
$tbl_name=""; // Table name


mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");

$myusername=mysql_real_escape_string($_POST['username']);
$mypassword1=mysql_real_escape_string($_POST['pass1']);
$mypassword2=mysql_real_escape_string($_POST['pass2']);
$myemail=mysql_real_escape_string($_POST['email']);
$myfirst=mysql_real_escape_string($_POST['first']);
$mylast=mysql_real_escape_string($_POST['last']); 

if(!($mypassword2 == $mypassword1)){
  $message = "passwords do not match!";
  echo "<script type='text/javascript'>alert('$message');</script>";
 }
 else{

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' or email='$myemail'";
$result=mysql_query($sql);  


$count=mysql_num_rows($result);
echo $myusername;

if($count > 0){
  $message = "Username or Email already in use!";
  echo "<script type='text/javascript'>alert('$message');</script>";
} else {
    $sql = 'INSERT INTO users (`id`, `username`, `password`, `first`, `last`, `email`, `grade`,             `skype`, `phone`, `credentials`) 
VALUES (NULL, \'$myusername\', \'$mypassword1\', \'$myfirst\', \'$mylast\', \'$myemail\', NULL, NULL, NULL, NULL);';

$message = "inserted!";
  echo "<script type='text/javascript'>alert('$message');</script>";
}  

}

HTML 代码:

<form name="create_account" method ="post" action="php/new_account.php">
                <fieldset class="account-info">
                    <label> First <input type="text" name="first" placeholder="First"> </label>
                    <label> Last <input type="text" name="last" placeholder="Last"> </label>
                    <label> Email <input type="text" name="email" id="email" placeholder="Email">         </label>
                <label> Username <input type="text" name="username" id="username" placeholder="Username"> </label>
                <label> Password <input type="password" name="pass1" id="pass1" placeholder="Password"> </label>
                <label> Confirm Password <input type="password" name="pass2" id="pass2" placeholder="Confirm Password" onkeyup="checkPass(); return false;"> </label>
                <span id="confirmMessage" class="confirmMessage"></span>
            </fieldset>
            <fieldset class="account-action">
                <input class="btn" type="submit" name="submit" value="Submit">
                <a href="login.html" id="log"> Login </a>
            </fieldset>
        </form>

数据库图片: http://i.stack.imgur.com/oiwur.png

【问题讨论】:

  • 这个问题的标题太可怕了。并且 mysql_ 函数已被弃用;使用 PDO 或mysqli_

标签: javascript php html mysql web


【解决方案1】:

您根本没有运行查询。这只是一个字符串:

$sql = 'INSERT INTO users (`id`, `username`, `password`, `first`, `last`, `email`, `grade`,             `skype`, `phone`, `credentials`) 
VALUES (NULL, \'$myusername\', \'$mypassword1\', \'$myfirst\', \'$mylast\', \'$myemail\', NULL, NULL, NULL, NULL);';

你需要用

来运行它
mysql_query($sql, $connection);

你也应该把你的连接放在一个变量中:

$connection = mysql_connect("$host", "$username", "$password");

您正在使用已弃用的库。 mysql_ 已弃用,您很容易受到 sql 注入的攻击。您应该将连接更改为mysqli_PDO 并使用prepared statements

【讨论】:

    猜你喜欢
    • 2014-09-07
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多