谁能帮我把我的 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& 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" 你的表单看起来像<form method="POST" action="page.php">
然后按钮应该是 ` 或 <button type="submit" name="buttonName">Register</button>
好的,我得到了它的工作,但由于某种原因,表单工作正常,但即使它已连接,数据库也无法获取数据,我......而且也没有验证它是否已发送到数据库然后登录到新闻提要页面,它直接进入新闻提要页面。
好的,我以同样的趋势重新粘贴了它......我尝试添加验证部分,但它似乎不起作用,所以我删除了它......但是你的想法是什么
以上是关于谁能帮我把我的 SQL 连接到这个源代码它对我不起作用的主要内容,如果未能解决你的问题,请参考以下文章
用于 android 的 asynctask 使用 php 连接到 mysql
我正在通过 Java 连接到 MySQL,但它没有正确。谁能帮我? [复制]