将 mysql 更改为 mysqli 及其 xampp 版本
Posted
技术标签:
【中文标题】将 mysql 更改为 mysqli 及其 xampp 版本【英文标题】:Changes mysql to mysqli and its xampp version 【发布时间】:2017-06-20 12:47:13 【问题描述】:如果我将代码从 mysql 更改为 mysqli,我是否也要更改 xampp 版本?我的 xampp 版本是 2.5.8。
因为我更改它们后,发生了许多错误,并且所有错误都指向'mysqli',例如:
mysqli_prepare()
mysqli_stmt_bind_param()
mysqli_stmt_execute()
mysqli_num_rows()
连接.php
<?php
session_start();
// *Peringatan jangan ubah fail ni..
$dbhost = "localhost"; //server untuk test
$dbuser = "root"; //user MYSQL
$dbpass = ""; //password MYSQL
$db = "sukandb"; //nama database
//tapi bila masuk ke dalam server kena tukar ikut keadaan server
$conn = new mysqli ($dbhost, $dbuser, $dbpass, $db);
if($conn->connect_error)
die("Connection failed : " . $conn->connect_error);
?>
所有错误都在这个文件中: index.php
<?php
ob_start();
include("connection.php");
if($_SESSION['LoggedIn']):
echo "Hello " .$_SESSION['nama'];
endif;
$query = mysqli_prepare("SELECT * FROM daftar_pengguna WHERE noic = ? AND
katalaluan = ?");
mysqli_stmt_bind_param($query, $_POST["noic"],md5($_POST["katalaluan"]));
mysqli_stmt_execute($query);
if(mysqli_num_rows($query) == 1)
$result = mysqli_fetch_assoc($query);
$_SESSION['userdetail']=$query;
$_SESSION['LoggedIn'] = true;
$_SESSION['nama'] = $result["nama"];
header("location:carianstatuspemohonresult.php");
exit;
else
echo "Salah nombor IC dan kata laluan";
?>
【问题讨论】:
能否发布您的错误信息。 当然。警告:mysqli_num_rows() 期望参数 1 为 mysqli_result 警告:mysqli_stmt_execute() 期望参数 1 为 mysqli_stmt,在警告中给出 null:mysqli_num_rows() 期望参数 1 为 mysqli_result,在中给出 null 这不是你如何使用prepared statement以及如何获取行数。 @LoganWayne 是哪一个? 【参考方案1】:您的mysqli_query()
将在第一个参数上查找您的数据库连接:
$query = mysqli_prepare($conn, "SELECT userdetail, nama FROM daftar_pengguna WHERE noic = ? AND katalaluan = ?");
将绑定部分改为
mysqli_stmt_bind_param($query, "ss", $_POST["noic"], md5($_POST["katalaluan"]));
然后得到结果:
mysqli_stmt_bind_result($query, $userdetail, $nama);
mysqli_stmt_fetch($query);
另请参阅 here 以了解有关 mysqli_*
准备好的语句的更多信息。
还可以使用password_hash()
更安全地存储密码。
【讨论】:
这个答案只对 OP 有用,但对其他人没有用。鉴于 OP 会接受这一点,它弊大于利。只是一个想法。 @YourCommonSense 所以我应该使用 Logan Wayne 解决方案吗? @iladila 我的回答会解决你目前的情况,但是YourCommonSense说的范围更广【参考方案2】:不,您不必更改 xampp。只要您使用 PHP 5,mysqli
就可以正常工作。
首先你需要了解 xampp,实际上 xampp 只不过是 PHP、MySQL 和 Apache 的捆绑包(但有更多选项和服务器)。
您需要检查XAMPP
提供的 PHP 版本。要检查您的 PHP 版本,请转到您的 XAMPP 控制面板并运行 shell,然后键入以下命令
php -v
如果您的 PHP 版本类似于 5.*,那么您将从 MySQL 转到 MySQLi
mysqli 扩展旨在与 MySQL 4.1.13 或更高版本、5.0.7 或更高版本一起使用。 mysqli 扩展是在 PHP 5.0.0 版本中引入的。 MySQL 本机驱动程序包含在 PHP 版本 5.3.0 中。 检查您的版本并决定是否更改。
更新:在您的声明中提供您的$conn
(准备方法)。
【讨论】:
我已经检查了php版本。它是 PHP 5.3.1。但错误让我感到困惑 对不起,我迟到了。我正在使用 PHPMYADMIN。它的版本是 3.2.4。这也是我的问题之一吗? 你为什么不安装新的 xampp ???看看你是否得到错误。 errmmm mysql服务器版本:5.1.41,MySQL客户端版本:5.1.41 伙计们,你们为什么还在讨论版本等问题?如果你们中的任何人看过代码,你会在 1 分钟内看到他的语句中有语法错误。以上是关于将 mysql 更改为 mysqli 及其 xampp 版本的主要内容,如果未能解决你的问题,请参考以下文章