任何人都可以帮助我将SQL连接到此源代码这对我不起作用

时间:2016-12-13 04:29:26

标签: php html networking mysqli social

我一直试图让我的代码转换为PHP并运行PHP,并且一直试图弄清楚如何为我的表单设置mysqli它是我做过的第一个表单,任何人都可以帮忙出来mysqli和php的问题。当我在Dreamweaver中尝试PHP然后在chrome中加载页面时,它提供的是裸露的代码而不是网站,请帮助并且无论我做什么,我的注册按钮都不起作用。

    <?php

$host_name = "localhost";
$u_name    = "root";
$u_pass    = "";
try {
    $dbh = new PDO("mysql:host=$host_name;dbname=members", $u_name, $u_pass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $ex) {
    echo  "Connection failed: " . $ex->getMessage();

}


$errors="";


if(isset($_POST['reg'])){


    // check if fields are not empty

    if(empty($_POST['email'])){

        die("Enter email");
        $errors++;
    }else{

        $email = $_POST['email'];


        //verify email here


    }

    if(empty($_POST['password'])){

        die("Enter password");
        $errors++;
    }else{

        $password = $_POST['password'];

        $hash = password_hash($password,PASSWORD_DEFAULT);// hashing password
    }

    if($errors<=0){

        // No errors insert to the db

        $stmt = $dbh->prepare("INSERT into users (userID,fname,lname,em,pswd,dob,sex) VALUES('userID','fname','lname','em','pswd','dob','sex')");
        $stmt->execute(array($userid,$fname,lname,$em,$pswd,$dob,$sex));

        echo "success";
    }



}


?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Trenndle</title>
<link type="text/css" rel="stylesheet" href="css/login.css" />
</head>

<body>
    <div class="header">
        <h1>Trenndle</h1>
    </div>
    <div>
        <iframe width="50%" height="450" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/215699122&amp; auto_play=true;"></iframe>
    </div>
    <div id="form">
        <form action="#" method="post">
            <table>
                <td>
                    <tr>
                        <td><input name="fname" type="text" style="width:135px;" placeholder="First Name" /><input name="lname" type="text" style="width:135px;" placeholder="Last Name" /></td>
                    </tr>
                    <tr>
                        <td><input name="userID" type="text" style="width:278px;" placeholder="Username" /></td>
                    </tr>
                    <tr>
                        <td><input name="em" type="text" style="width:278px;" placeholder="Email" /></td>
                    </tr>
                    <tr>
                        <td><input name="em2" type="text" style="width:278px;" placeholder="Re-Type Email" /></td>
                    </tr>
                    <tr>
                        <td><input name="pswd" type="password" style="width:278px;" placeholder="Password" /><<br /></td>
                    </tr>
                    <tr>
                        <td><input name="pswd2" type="password" style="width:278px;" placeholder="Re-Type Password" /></td>
                    </tr>
                    <tr>
                        <td name="dob"><br />
                            <?php

// ======================Months drop Down=============
$month_array = array(
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
);

echo '<select name="birthmonth">';


foreach ($month_array as $months) {


    echo '<option value="' . $months . '">' . $months . '</option>';

}

echo '</select>';

//End Months dropdown

//===============Days Dropdown=================
$dates = range(1, 31);

echo '<select name="day">';
foreach ($dates as $birthday) {
    echo '<option value="' . $birthday . '">' . $birthday . '</option>';
}
echo '</select>';


//Start years Dropdown

$yearArray = array_combine(range(date("Y"), 1960), range(date("Y"), 1960));

echo "<select>";
foreach ($yearArray as $bithyears) {

    echo "<option value=\"" . $bithyears . "\">" . $bithyears . "</option>";
}
?>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="radio" name="sex" value="1" />
                            <label style="color: white;">Female</label>

                            <input type="radio" name="sex" value="2" />
                            <label style="color: white;">Male</label>
                        </td>
                    </tr>
                    <td>
                        <p style="color: whitesmoke;">By clicking Sign Up, you agree to our Terms <br/> and that you have read our Data Policy, including our Cookie Use.</p>
                        <hr><br/>
                            <button name="reg" type="submit" style="width:200px; height:40px; font-weight:bold; background:rgba(0, 191, 255, 0.3); border-radius:10px; border:1px solid black; color:white; font-size:20px;">Register Now</button>
                    </td>
                </td>
            </table>
        </form>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您的计算机上似乎没有设置php环境。 要使用mysql运行php,首先需要下载一台服务器才能在你的机器上本地使用,它可以是xampp / wampp / easyPhpDevserver中的任何一个以及其他我没有提及你喜欢的任何一个。

在这个答案中我将使用Xampp,你可以在一次安装中下载Xampp here这个xampp附带apache,mysql和php。

  

注意:我正在使用Windows环境

步骤1:在上面的链接上下载Xampp。 步骤2:运行.exe文件并安装xampp。 第3步:您将提示您选择要安装的组件,(在这种情况下,我们需要php和mysql)请选择那些。然后单击“下一步”。

enter image description here

步骤4:选择要安装XAMPP的文件夹。此文件夹将保存所有Web应用程序文件,因此请确保选择具有足够空间的驱动器。通常是C盘。 enter image description here

安装现在将处理,你会得到一些恼人的促销BitNami,一个服务器软件的应用程序商店。取消选中“详细了解BitNami for XAMPP”复选框,除非您真的喜欢收到促销邮件。

第5步:安装现已完成!选择“是否要立即启动控制面板?”复选框以打开XAMPP控制面板。

步骤6:在Xampp控制面板上单击启动apache以及mysql(稍后我们将在回答上述问题时使用此功能)

步骤7:让我们测试我们的服务器是否被读取,现在转到C:\ xampp / htdocs 插入htdocs创建一个目录,按照你想要的名字命名,我将命名我的测试。 现在我们的目录是C:\ xampp / htdocs / test

步骤8:插入测试创建名为index.php的文件

步骤9:使用文本编辑器/ IDE打开index.php文件,我使用的是phpstorm,所以在你的情况下是dreameaver

步骤10:现在插入文件类型以下

<?php

  echo "My First php example";
?>

然后保存。

现在最后一步是检查这是否正在运行

打开网络浏览器并输入:localhost / test /或127.0.0.1/test /

您应该看到以下屏幕

enter image description here

如果你在浏览器上看到这个文字:My First php example

祝贺您已成功使用php安装xampp并创建了第一个php基本程序。

现在是mysql

在第6步启动mysql服务,现在让我们创建第一个数据库,在这个例子中我们将使用PDO

现在打开一个新标签并输入localhost / phpmyadmin,这是我们要创建数据库的地方。您应该看到以下屏幕

enter image description here

您的数据库不会太多,我们将使用默认用户的详细信息根。

现在点击SQL标签

在显示的块上键入以下sql

create database firstdb;然后点击右下方的 go ,然后刷新页面时应创建数据库,您将在左侧看到数据库。

现在我们有了一个数据库,我们需要一个表来保存您的用户数据。

现在再次单击SQL选项卡,然后键入以下内容:

use firstdb;

create table users(
userID int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
firstname varchar(255) NOT NULL,
lastname varchar(255) NOT NULL,
DOB date not null,
gender enum('M','F') NOT NULL,
email varchar(255) NOT NULL,
password varchar(255) NOT NULL    

)engine=innodb;

然后输入go,恭喜您已成功创建第一个表格。

现在让我们使用php连接到数据库并回答上面的问题。

要连接到我们的数据库:返回我们的index.php文件并删除我们在步骤9/10中写的内容

然后编写此代码

<?php

$host_name = "localhost";
$u_name    = "root";
$u_pass    = "";
try {
    $dbh = new PDO("mysql:host=$host_name;dbname=firstdb", $u_name, $u_pass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "connected :)";
}
catch (PDOException $ex) {
    echo  "Connection failed: " . $ex->getMessage();

}


?>

这是使用PDO在数据库上连接的代码,现在我们已成功连接到数据库,现在让我们在你的表单上工作,它太长了我会把它缩短。我只会告诉你使用php和html制作出生日期下拉的简单快捷方法。

<?php

// ======================Months drop Down=============
$month_array = array(
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
);

echo '<select name="birthmonth">';


foreach ($month_array as $months) {


    echo '<option value="' . $months . '">' . $months . '</option>';

}

echo '</select>';

//End Months dropdown

//===============Days Dropdown=================
$dates = range(1, 31);

echo '<select name="day">';
foreach ($dates as $birthday) {
    echo '<option value="' . $birthday . '">' . $birthday . '</option>';
}
echo '</select>';


//Start years Dropdown

$yearArray = array_combine(range(date("Y"), 1960), range(date("Y"), 1960));

echo "<select>";
foreach ($yearArray as $bithyears) {

    echo "<option value=\"" . $bithyears . "\">" . $bithyears . "</option>";
}
?>

输出选择下拉列表,非常简单,而不是您拥有的那么长的HTML代码。

enter image description here

正如我上面所说的那样,我不会为你做完整的表格,因为它很长,我有其他的工作,

现在让我们将表单中的数据保存到我们数据库中的用户表中。

我只需在数据库中插入电子邮件和密码,以节省时间,

我们的代码现在看起来像:

<?php

$host_name = "localhost";
$u_name    = "root";
$u_pass    = "";
try {
    $dbh = new PDO("mysql:host=$host_name;dbname=firstdb", $u_name, $u_pass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $ex) {
    echo  "Connection failed: " . $ex->getMessage();

}


$errors="";


if(isset($_POST['register'])){


    // check if fields are not empty

    if(empty($_POST['email'])){

        die("Eter email");
        $errors++;
    }else{

        $email = $_POST['email'];


        //verify email here


    }

    if(empty($_POST['password'])){

        die("Enter password");
        $errors++;
    }else{

        $password = $_POST['password'];

        $hash = password_hash($password,PASSWORD_DEFAULT);// hashing password
    }

    if($errors<=0){

        // No errors insert to the db

        $stmt = $dbh->prepare("INSERT into users (email,password) VALUES(?,?)");
        $stmt->execute(array($email,$password));

        echo "success";
    }



}


?>

现在我们已经成功地在数据库中插入了我们的第一个信息,用户现已注册,我们需要立即登录用户

我们的简单登录脚本:

<?php
ob_start();
session_start();

$host_name = "localhost";
$u_name    = "root";
$u_pass    = "";
try {
    $dbh = new PDO("mysql:host=$host_name;dbname=firstdb", $u_name, $u_pass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $ex) {
    echo "Connection failed: " . $ex->getMessage();

}

if (isset($_SESSION['user'])):
    header("Location:dashboard");
endif;



if (isset($_POST['login'])) {
    if (empty($_POST['uname']) || empty($_POST['pass'])) {
        $loginError = "Enter username and Password";
    } else {
        $username = userInput($_POST['uname']);
        $password = userInput($_POST['pass']);

        try {
            $stmt = $dbh->prepare("SELECT
                                               userID,
                                               email,
                                               password 
                                            FROM
                                               users 
                                            Where
                                               email=? 
                                               ");
            $stmt->bindValue(1, $username);
            $stmt->execute();
            $results = $stmt->fetchall(PDO::FETCH_ASSOC);

            if (count($results > 1)) {

                foreach ($results as $row) {

                    if (password_verify($password, $row['admin_password'])) {

                        echo "Login Succcess!! Redirecting...";
                        $_SESSION['user'] = $row['userID'];
                        header("refresh:10; url=dashboard");
                    } else {

                        die("username and password does not match");
                    }
                }
            }
        }

        catch (Exception $e) {
            error_log($e);
        }
    }
}
ob_end_clean();

上面是我们的登录脚本,首先我们检查用户是否登录后如果他们登录我们将他们带回仪表板。或者显示登录页面。

我希望这会帮助你获得一两件事,我建议你看看:

  1. php简介 - &gt;&gt;&gt; Click here

  2. Php表格处理 - &gt;&gt;&gt; Here

  3. 数组---&gt; here
  4. 列表无穷无尽,只需访问php文档即可。在php.net上
  5. 谢谢,随意给我买啤酒。