2015-11-28 2 views
1

Я работаю над написанием базовой программы PHP, но моя программа не работает, потому что PHP не поддерживает функции и fetch_assoc().Php get_result() и fetch_assoc() alternative

Как я могу переписать код, чтобы они могли работать так же, как эта функция?

public function storeUser($userLoginID, $password) {       

    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; 
    $salt = $hash["salt"]; 
    $stmt = $this->conn->prepare("INSERT INTO hkcheung.users(unique_id,userLoginID,encrypted_password,salt,created_at) VALUES (?,?,?,?,NOW())"); 
    $stmt->bind_param("ssss", $uuid, $userLoginID, $encrypted_password, $salt); 
    $result = $stmt->execute(); 
    $stmt->close(); 
    if ($result) { 
     $stmt = $this->conn->prepare("SELECT * FROM hkcheung.users WHERE userLoginID=?"); 
     $stmt->bind_param("s", $userLoginID); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $users = $result->fetch_assoc(); 
     $stmt->close(); 
     return $users; 
    } else { 
     return false; 
    } 
} 
+0

почему она не работает? какая ошибка вы получаете? –

+0

Он должен работать, но хост не поддерживает функцию get_result(), версия php не является достаточно новой. Хозяин из моего университета, я не могу его обновить самостоятельно, и я вынужден настроить код, чтобы справиться с ним. Но я новичок в php. –

+0

попробуйте mysqli_fetch_assoc вместо $ result-> fetch_assoc(); и mysqli_stmt_get_result ($ result) вместо $ result = $ stmt-> get_result(); –

ответ

0

добавить ниже функции РНР файл

function get_result($Statement) { 
    $RESULT = array(); 
    $Statement->store_result(); 
    for ($i = 0; $i < $Statement->num_rows; $i++) { 
     $Metadata = $Statement->result_metadata(); 
     $PARAMS = array(); 
     while ($Field = $Metadata->fetch_field()) { 
      $PARAMS[] = &$RESULT[ $i ][ $Field->name ]; 
     } 
     call_user_func_array(array($Statement, 'bind_result'), $PARAMS); 
     $Statement->fetch(); 
    } 
    return $RESULT; 
} 

и на get_result линии, измените его на

$result = $this->get_result($stmt); 
Смежные вопросы