【问题标题】:mysqli_connect problemmysqli_connect 问题
【发布时间】:2011-06-10 23:10:17
【问题描述】:

这是我的登录脚本;

<?php
$username = $_POST['username']; //kullanici adi
$password = $_POST['password']; //parola
$msg ='';
if(isset($username, $password)) {
    ob_start();
    include('ayar.php');
    // güvenlik amaçli sql injection önlemek için sinirlama koy
    $dbC = mysqli_connect($vthost, $vtkullanici, $vtsifre, $vtadi)
    or die('Veritabanina baglanilamadi');
    $myusername = stripslashes($username);
    $mypassword = stripslashes($password);
    $myusername = mysqli_real_escape_string($dbC, $myusername);
    $mypassword = mysqli_real_escape_string($dbC, $mypassword);
    $sql="SELECT * FROM login_admin WHERE user_name='$myusername' and user_pass=SHA('$mypassword')";//SHA çöz
    $result=mysqli_query($dbC, $sql);
    // kayit kontrol et
    $count=mysqli_num_rows($result);
    // kayit eslemesi kontrol et
    if($count==1){
        // esmeleme varsa oturum aç ve yönlendir 
        session_register("admin");
        session_register("password");
        $_SESSION['name']= $myusername;
        header("location:raporla.php");
    }
    else {
        $msg = "Yanlis kullanici adi yada parola";
        header("location:index.php?msg=$msg");
    }
    ob_end_flush();
}
else {
    header("location:index.php?msg=Kullanici adi yada parola girmediniz");
}
?>

ayar.php 我有主机、用户名等。上面没有问题。但问题是它在本地和任何其他主机上运行良好,但在这个主机上却不行。这是服务器错误日志的内容。

[11-Jun-2011 02:01:26] PHP Fatal error:  Call to undefined function  mysqli_connect() in /home/bankalar/public_html/rapor/giris.php on line 9

mysqli_connect()。我在我的 php conf 中搜索了这个模块。但是没有这样的。任何想法?

【问题讨论】:

  • 服务器是否运行PHP5或以上?

标签: php mysqli


【解决方案1】:

在您的 php.ini(在 Windows 下)中,您应该有以下行:

...
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
...

请务必将 mysqli 注释掉(删除之前的 ;

编辑: 正如@datasage 所指出的,如果您正在运行 Linux 发行版,行将具有不同的命名,例如:

;   extension=msql.so
;
; ... or with a path:
;
;   extension=/path/to/extension/msql.so

如果您在共享主机上并且无法访问 php.ini,我建议您给他们留言并要求启用它。

如果您有私人服务器,并且没有安装 mysqli 扩展,请按照 php 手册说明 here 获取有关如何安装的指南。

否则,您可能想要使用PDO 类(自 php 5.1 起就在默认安装中),它甚至比 mysqli 具有很大的优势,并且对于使您的数据库更安全非常有用。

【讨论】:

  • 这适用于 Windows。在linux中它的.so。但是您必须为 PHP 安装文件才能找到它们。根据您的系统,它们可能不是。
  • 我要再补充一点,您可以通过 Linux 上的包管理器安装支持,例如“yum install php-mysql”(适用于基于 RHEL 的发行版)
  • 在 php 手册中说;在 PHP 5.3.0 和更新版本中,mysqli 默认使用 MySQL Native Driver。这比 libmysql 有很多好处。安装 php 5.3.x 可以在不编辑 php.ini 的情况下修复?
  • @Recep 您当前的版本和环境是什么?不过,如果可以的话,我建议尝试取消注释这些行(更改后重新启动服务器),这样会更容易。
  • @damien 5.2.17,转售服务器。我可以访问 WHM 控制台。我对此很陌生
【解决方案2】:

Mysqli 扩展未安装或未启用。

如何解决这取决于您的环境。

【讨论】:

    【解决方案3】:

    如果你使用 MySQLi 类,你应该使用它面向目标:

    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
    

    查看manual page。您正在使用的调用只是__construct()-方法的别名。看看 OO 方式是否适合您。

    另外,不要相信用户的输入。为您的查询使用PreparedStatement

    【讨论】:

    • 如果没有启用mysqli,对象也将不可用。
    • 它应该默认激活(并不意味着它不能被停用)......我认为有趣的问题是PHP5是否正在运行,因为MySQLi类是在PHP 5.0中引入的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2014-09-18
    • 2020-10-24
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多