【问题标题】:Making the transition from mysql_ to MySQLi or PDO从 mysql 过渡到 MySQLi 或 PDO
【发布时间】:2014-01-31 14:40:11
【问题描述】:

我一直在这里和谷歌搜索如何从一开始就将我的所有 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();
?>

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

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

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

页面开始

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
?>

页尾

为什么?因为这是我在 MYSQL 中编写代码时使用的简单方法,并且所有站点结构都是基于这样的。

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

非常感谢

【问题讨论】:

  • VALUES ('?','?','?') VALUES (?, ?, ?)
  • 感谢这位朋友

标签: php mysql login pdo mysqli


【解决方案1】:

我会建议你学习 PDO(PHP Data Objects) 而不是 MySQLi 因为 PDO 支持 12 种不同的数据库 驱动程序而 MySQLi 只支持MySQL 数据库。

要了解 PDOMySQLi 之间的区别,请访问-
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?

【讨论】:

    【解决方案2】:

    您的表格也需要有一个密码列。

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

    【讨论】:

    • 感谢 M8 有没有办法使用旧式 mysql 布局,例如:
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2013-02-08
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多