从mysql_转换到MySQLi或PDO

时间:2014-01-12 22:51:55

标签: php mysql login pdo mysqli

我一直在这里和谷歌搜索如何从一开始就将我的所有MYSQL脚本更改为MYSQLI或PDO。问题是由于某种原因我无法理解,因为我没有经验,我不能做一个简单的会话工作。以下是我将要开始做的事情,因为我想学习新的MYSQLi:

我选择了注册表(我不会在公开场合使用它,我的网站仅供朋友使用,我选择的人不会成为会员,我会签名)

<?php
/* instantiate our class, and select our database automatically */
$sql = mysqli('localhost','user','password','database');

/*
let's assume we've just received a form submission.
so we'll receive the information, and we'll escape it
this step is not necessary, but why not.
*/
$name  = $_POST['name'];
$age   = $_POST['age'];
$email = $_POST['email'];

/* build the query, we'll use an insert this time */
$query = $sql->prepare("INSERT INTO `tablename` VALUES ('?','?','?');");

/*
bind your parameters to your query
in our case, string integer string
*/
$query->bind_param("sis",$name,$age,$email);
/* execute the query, nice and simple */
$query->execute();
?>

这对我来说很容易理解,现在我找不到用户登录的好例子,我找到的所有示例都来自专家开发人员,他们主要创建如此复杂的脚本,我甚至不需要它。已经安装了很多现成的例子,感觉它们并不是很好。

我一直在等待和寻找并每天12小时搜索一周是:

我希望用户只需登录,然后脚本会有这样简单的东西:

PAGE START

   
HELLO <PHP ECHO USERNAME> <PHP ECHO AGE> <PHP ECHO ANYTHING FROM DB> 
THANKS

<?php
ELSE
IF USER IS NOT LOGGED IN
REDIRECT TO THE PAGE NOTMEMBER.PHP
?>

PAGE END

为什么呢?因为这是我用来在MYSQL中编码的简单方法,所有站点结构都是这样的。

示例或演示网站也会有所帮助。

非常感谢

2 个答案:

答案 0 :(得分:1)

我建议您学习 PDO(PHP数据对象)而不是 MySQLi ,因为PDO支持 12个不同的数据库驱动程序,而MySQLi仅支持MySQL数据库。

要了解 PDO MySQLi 之间的 差异 ,请访问PDO vs. MySQLi: Which Should You Use?
要了解 PDO ,请访问这个非常好的教程 -
1。Why you Should be using PHP's PDO for Database Access
2。PHP Database Access: Are You Doing It Correctly?

答案 1 :(得分:0)

你的桌子也需要有一个密码栏。

HTML登录表单:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 <input type="text" name="email" />
 <input type="text" name="password" />
 <input type="submit" name="submit" value="Log in" />
</form>

在PHP文件中抓住它:

if(isset($_POST['submit'])) {
 $email = $_POST['email'];
 $pass = $_POST['password'];
 if($email != '' && $pass != '') { //both not empty, proceed
  $checkUser = $sql->prepare("SELECT * FROM `users` WHERE `email` = ? AND `pass` = ?");
  $checkUser->bind_param('ss', $email, $pass);
  $checkUser->execute();
  if($checkUser->num_rows() > 0) { //if user exists with given email and pass
   $_SESSION['logged-in'] = 1;
  }
 }
}

确保将session_start();放在每个PHP文件的顶部。然后你只需使用

if($_SESSION['logged-in'] == 1) {
 echo 'this is for logged in users';
} else {
 header("Location: notMember.php");
 exit();
}