谁能帮我把我的 SQL 连接到这个源代码它对我不起作用

Posted

技术标签:

【中文标题】谁能帮我把我的 SQL 连接到这个源代码它对我不起作用【英文标题】:Can Anyone Help me With connecting my SQL to this source code It doesn't work for me 【发布时间】:2017-04-28 01:55:02 【问题描述】:

我一直在尝试让我的代码在这里转换为 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   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>

【问题讨论】:

请简化您的问题。你有很多额外的东西没有突出核心问题。请包括一些不符合您期望的 php 代码源。请展示您的期望。 @Kaleb Carrington 让您的问题变得简单,我希望您能以点为单位提出您的要求和问题。 你需要在服务器或类似 xampp 的东西上运行脚本,这就是你看到裸代码的原因 在值中用占位符替换你拥有的变量,就像我在回答中所做的那样 【参考方案1】:

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

在这个答案中,我将使用 Xampp,您可以下载Xampp here 这个 xampp 包含 apache、mysql 和 php 一次安装。

注意:我使用的是 windows 环境

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

第 4 步:选择要安装 XAMPP 的文件夹。该文件夹将保存所有 Web 应用程序文件,因此请确保选择有足够空间的驱动器。一般是C盘。

现在安装将进行,您将获得一些令人讨厌的 BitNami 促销,这是一个服务器软件的应用商店。取消选中“了解有关 XAMPP 的 BitNami 的更多信息”复选框,除非您真的很喜欢接收促销邮件。

第 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/

您应该会看到以下屏幕

如果您在浏览器上看到此文本:我的第一个 php 示例

恭喜你已经成功安装了xampp with php,并创建了你的第一个php基础程序。

现在mysql

在第 6 步中,您启动 mysql 服务,现在让我们创建我们的第一个数据库,在此示例中我们将使用 PDO。

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

你的不会有这么多数据库,我们将使用默认用户的详细信息根。

现在点击 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代码。

正如我在上面所说的,我不会给你完整的表格,因为它很长而且我还有其他工作,

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

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

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

<?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();

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

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

    php简介->>>Click here

    Php 表单处理->>> Here

    数组 --->here 列表不胜枚举,只需访问 php 文档即可。在 php.net 上

谢谢,请随时给我买啤酒。

【讨论】:

感谢兄弟的帮助 嘿,我是否必须将 post 值添加到表单或按钮本身,如果是这样,是按钮的 method="post" 还是 type="submit" 你的表单看起来像 &lt;form method="POST" action="page.php"&gt; 然后按钮应该是 ` 或 &lt;button type="submit" name="buttonName"&gt;Register&lt;/button&gt; 好的,我得到了它的工作,但由于某种原因,表单工作正常,但即使它已连接,数据库也无法获取数据,我......而且也没有验证它是否已发送到数据库然后登录到新闻提要页面,它直接进入新闻提要页面。 好的,我以同样的趋势重新粘贴了它......我尝试添加验证部分,但它似乎不起作用,所以我删除了它......但是你的想法是什么

以上是关于谁能帮我把我的 SQL 连接到这个源代码它对我不起作用的主要内容,如果未能解决你的问题,请参考以下文章

用于 android 的 asynctask 使用 php 连接到 mysql

我正在通过 Java 连接到 MySQL,但它没有正确。谁能帮我? [复制]

谁能帮我理解为啥在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?

谁能帮我把这个java代码分析一下我被绕晕了

android中的电池使用情况分析[关闭]

什么是 XAMPP?谁能帮我解决它的 mySQL 错误?