2015-08-11 4 views
-5

У меня есть следующий код, который я получил из Интернета для «Проверить доступность имени пользователя».Проблемы при преобразовании mysql_ * в mysqli_ *. Код не работает

Это написано mysql_*, но я хочу преобразовать его в mysqli_*, так как mysql_* больше не будет поддерживаться в PHP7.

Но после преобразования это не работает, имя пользователя не проверяется, и я всегда становлюсь Green Tick.

Я пробовал программирование ООП также процедурный, и в конце концов я просто добавил в конце mysql «i» для mysqli. Это код с mysql_ *. Может ли кто-нибудь помочь с конвертированием?

Файл dbConnector.php:

<?php 

class DbConnector { 

var $theQuery; 
var $link; 

function DbConnector(){ 

    // Get the main settings from the array we just loaded 
    $host = 'localhost'; 
    $db = 'accesspi'; 
    $user = 'root'; 
    $pass = ''; 

    // Connect to the database 
    $this->link = mysql_connect($host, $user, $pass); 
    mysql_select_db($db); 
    register_shutdown_function(array(&$this, 'close')); 

    } 

    //*** Function: query, Purpose: Execute a database query *** 
function query($query) { 

    $this->theQuery = $query; 
    return mysql_query($query, $this->link); 

} 

    //*** Function: fetchArray, Purpose: Get array of query results *** 
function fetchArray($result) { 

    return mysql_fetch_array($result); 

    } 
    //*** Function: close, Purpose: Close the connection *** 
    function close() { 

    mysql_close($this->link); 
} 
} 
?> 

Файл check.php

<?php 
include("dbConnector.php"); 
$connector = new DbConnector(); 

$username = trim(strtolower($_POST['username'])); 
$username = mysql_escape_string($username); 

$query = "SELECT username FROM admin WHERE username = '$username' LIMIT 1"; 
$result = $connector->query($query); 
$num = mysql_num_rows($result); 

echo $num; 
mysql_close(); 
?> 

Файл index.php с кодом яваскрипта

<link href="../style.css" rel="stylesheet" type="text/css" /> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> 
<script> 
$(document).ready(function(){ 
$('#username').keyup(username_check); 
}); 

function username_check(){ 
var username = $('#username').val(); 
if(username == "" || username.length < 4){ 
$('#username').css('border', '3px #CCC solid'); 
$('#tick').hide(); 
}else{ 

jQuery.ajax({ 
type: "POST", 
url: "check.php", 
data: 'username='+ username, 
cache: false, 
success: function(response){ 
if(response == 1){ 
$('#username').css('border', '3px #C33 solid'); 
$('#tick').hide(); 
$('#cross').fadeIn(); 
}else{ 
$('#username').css('border', '3px #090 solid'); 
$('#cross').hide(); 
$('#tick').fadeIn(); 
    } 

    } 
    }); 
    } 
    } 

</script> 

<style> 
#username{ 
padding:3px; 
font-size:18px; 
border:3px #CCC solid; 
} 

#tick{display:none} 
#cross{display:none} 


</style> 
</head> 

<body> 


Username: <input name="username" id="username" type="text" /> 
<img id="tick" src="tick.png" width="16" height="16"/> 
<img id="cross" src="cross.png" width="16" height="16"/> 

</body> 
</html> 

Преобразованные файлы dbConnector. PHP

<?php 

class DbConnector { 

var $result; 
var $conn; 

function DbConnector(){ 

    // Get the main settings from the array we just loaded 
    $host = 'localhost'; 
    $db = 'accesspi'; 
    $user = 'root'; 
    $pass = ''; 

    // Connect to the database 
    $conn= mysqli_connect($host, $user, $pass, $db); 

    } 

//*** Function: query, Purpose: Execute a database query *** 
function query($query) { 

     $result = $conn->query($query); 

    } 

    //*** Function: fetchArray, Purpose: Get array of query results *** 
    function fetchArray($result) { 

    return $result->fetch_array(MYSQLI_ASSOC); 

    } 

    //*** Function: close, Purpose: Close the connection *** 
    function close() { 

    $conn->close(); 

} 

} 

?> 

и check.php

 <?php 
    include("dbConnector.php"); 
    $connector = new DbConnector(); 
    if (isset($_POST['username'])){ 
    $username = trim(strtolower($_POST['username'])); 
    $username = $connector->real_escape_string($username); 

    $query = "SELECT username FROM admin WHERE username = '$username' LIMIT 1"; 
    $result = $connector->query($query); 
    $num = $result->num_rows; 

    echo $num; 
    $connector->close(); 
    } 
    ?> 
+2

SO * не * услуга преобразования кода. –

+1

Вы показываете нам конверсию, которую вы сделали, и мы укажем на любые ошибки. ** Мы не пишем его для вас ** – RiggsFolly

+0

Я отправлю конверт прямо сейчас – iris2015

ответ

-2

Попробуйте это:

<?php 
class DbConnector { 

    private $theQuery; 
    private $link; 

    public function __construct(){ 

     // Get the main settings from the array we just loaded 
     $host = 'localhost'; 
     $db = 'accesspi'; 
     $user = 'root'; 
     $pass = ''; 

     // Connect to the database 
     $this->link = new mysqli($host, $user, $pass,$db); 
     register_shutdown_function(array(&$this, 'close')); 
    } 

    /** 
    * Function: query, Purpose: Execute a database query 
    * @param $query 
    * @return bool|mysqli_result 
    */ 
    public function query($query) { 

     $this->theQuery = $query; 
     return $this->link->query($query); 

    } 

    /** 
    * Function: fetchArray, Purpose: Get array of query results 
    * @param $result mysqli_result 
    * @return mixed 
    */ 
    public function fetchArray($result) { 
     return $result->fetch_array(); 
    } 

    /** 
    * Function: close, Purpose: Close the connection 
    */ 
    public function close() { 
     if(isset($this->link)){ 
      $this->link->close(); 
      unset($this->link); 
     } 
    } 

    /** 
    * @return mysqli 
    */ 
    public function getLink(){ 
     return $this->link; 
    } 


} 

check.php:

<?php 
include("dbConnector.php"); 
$connector = new DbConnector(); 

$username = filter_input(INPUT_POST,'username',FILTER_SANITIZE_STRING); 
$username = $connector->getLink()->real_escape_string($username); 

$query = "SELECT username FROM admin WHERE username = '$username' LIMIT 1"; 
$result = $connector->query($query); 
$num = $result->num_rows; 

echo $num; 
$connector->close(); 
+0

Нет, это не работает, я все равно получаю всегда зеленый галочку. – iris2015

+0

У этой проблемы есть публичная функция close() { $ этом-> ссылка-> Close(); } – iris2015

+0

какая проблема? Для меня это отлично работает. Может быть, оберните его if ($ this-> link) $ this-> link-> close(); –

Смежные вопросы