mysqli_connect问题

时间:2011-06-10 23:10:17

标签: php mysqli

这是我的登录脚本;

<?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上搜索了这个模块。但是没有这样的。任何的想法?

3 个答案:

答案 0 :(得分:5)

在您的 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以来的dafault安装),这比mysqli具有很大的优势,并且使数据库更安全是非常有用的。

答案 1 :(得分:3)

未安装Mysqli扩展程序或未启用它。

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

答案 2 :(得分:0)

如果您正在使用MySQLi类,则应使用Objective Oriented:

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

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

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