Suggereert deze var_dump van een database connectie een succesvolle verbinding?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Salvatore Luciano

Salvatore Luciano

29/01/2016 13:58:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php

object(CMySQL)#2 (5) {
    ["connection"]=> object(mysqli)#3 (19) {
        ["affected_rows"]=> int(0)
        [
"client_info"]=> string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: 7e72f9690b1498a1bead7a637c33a831c0d2f655 $"
        ["client_version"]=> int(50012)
        [
"connect_errno"]=> int(0)
        [
"connect_error"]=> NULL
        ["errno"]=> int(0)
        [
"error"]=> string(0) ""
        ["error_list"]=> array(0) { }
        [
"field_count"]=> int(0)
        [
"host_info"]=> string(20) "localhost via TCP/IP"
        ["info"]=> NULL
        ["insert_id"]=> int(0)
        [
"server_info"]=> string(16) "5.1.73-community"
        ["server_version"]=> int(50173)
        [
"stat"]=> string(135) "Uptime: 898055 Threads: 1 Questions: 3549 Slow queries: 0 Opens: 645 Flush tables: 1 Open tables: 19 Queries per second avg: 0.3"
        ["sqlstate"]=> string(5) "00000"
        ["protocol_version"]=> int(10)
        [
"thread_id"]=> int(608)
        [
"warning_count"]=> int(0) }
        [
"str_db_name"]=> string(0) ""
        ["_Error"]=> NULL
        ["_ErrorLevel"]=> int(256)
        [
"QueryLog"]=> NULL }


?>
 
PHP hulp

PHP hulp

03/05/2024 13:42:52
 
Ben van Velzen

Ben van Velzen

29/01/2016 14:01:31
Quote Anchor link
Gezien het feit dat een mislukte verbinding geen geldig object oplevert, ja je bent verbonden. Kijk voor de grap eens naar de inhoud van het object. Waarom zou je vermoeden dat het geen succesvolle verbinding zou zijn?
 
Salvatore Luciano

Salvatore Luciano

29/01/2016 14:32:26
Quote Anchor link
Hoe kan ik naar de inhoud van dit object kijken? Ik zou bijvoorbeeld graag de database naam willen zien waarmee het object is geconnect.
Gewijzigd op 29/01/2016 14:32:59 door Salvatore Luciano
 
Thomas van den Heuvel

Thomas van den Heuvel

29/01/2016 15:01:35
Quote Anchor link
Hier is de functie / methode connect_error() voor. Retourneert deze een waarde verschillend van NULL is er iets mis.

Ook zie ik niet helemaal hoe de database-naam relevant is, tenzij je ergens aan het inbreken bent?

1 minuut googlen had je het antwoord gegeven, je kunt dit (o.a.) bepalen door het uitvoeren van een query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT DATABASE();

EDIT: voor de beeldvorming: dit object representeert enkel de verbinding tussen PHP en een MySQL-database. Indien je vragen wilt stellen aan de database dien je queries uit te voeren om deze informatie te verkrijgen. Ik zie zo gauw geen property of methode die je deze informatie rechtstreeks geeft. Sterker nog, normaal is het (bij MySQLi) zo dat je de database-naam meteen opgeeft bij het maken van een verbinding.
Gewijzigd op 29/01/2016 15:08:57 door Thomas van den Heuvel
 
Salvatore Luciano

Salvatore Luciano

29/01/2016 15:27:09
Quote Anchor link
Nee ik ben nergens aan het inbreken. Ik ben het intranet van mijn werkgever, waaraan ongeveer 15 databases gekoppeld zijn, aan het overzetten naar PHP 7.0. Hier is de mysql_connect functie vervallen. Hieronder heb ik geprobeerd het probleem wat duidelijker te maken. In het onderste stuk returned hij false

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$oConnection
= mysqli_connect( $sHost, $sGebruikersnaam, $sWachtwoord, $sDatabasenaam );
if ($oConnection->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}


$this->connection = &$oConnection;

return $oConnection;
?>


Vervolgens wordt de $oConnection in een global variabele opgeslagen genaamd $db_cas. Daarna komt hij deze functie in.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    function checkBlocked($mannr)
    {

        global $db_cas;
  
        //Ik weet 100% zeker dat deze query een resultaat moet opleveren
        $sql = "SELECT * FROM user_blocked WHERE pers_persnr = '10377'";

        //Geeft een object terug, onderin de var_dump van dit object
        $res = $db_cas->Query($sql);

        //Hier gaat hij in de functie CountResult die zie je in het PHP stuk hieronder
        if($db_cas->CountResult($res) == 0)
        {

            return true;
        }
else {
            return false;
        }
    }

?>


CountResult functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
public function CountResult($resource = null) {
    //Hier gaat hij niet in
    if (is_null($resource)) {
        $this->SetError('Resource is a null object');
        return false;
    }

    //!!Hier gaat hij in dus hij zegt dat het niet echt een resource is??
    if (!is_resource($resource)) {
        $this->SetError('Resource ' . $resource->current_field . ' is not really a resource');
        return false;
    }

    $count = mysqli_num_rows($resource);
    return $count;
}

?>


Var_dump van Query Result
object(mysqli_result)#8 (5) {
["current_field"]=> int(0)
["field_count"]=> int(2)
["lengths"]=> NULL
["num_rows"]=> int(1)
["type"]=> int(0) }



Toevoeging op 29/01/2016 15:41:17:

Welp... http://stackoverflow.com/questions/24296675/i-am-updating-code-mysql-to-mysqli-now-i-am-get-stuck-in-is-resource-method
Gewijzigd op 29/01/2016 15:29:42 door Salvatore Luciano
 
Ben van Velzen

Ben van Velzen

29/01/2016 15:48:03
Quote Anchor link
Het is ook geen resource, dus je hoeft daar ook niet op te controleren. De mysql functies werken intern heel anders dan mysqli functies.
 
Salvatore Luciano

Salvatore Luciano

29/01/2016 15:57:01
Quote Anchor link
Ja ik heb hem door. Ik heb in de Fetch en CountResult functie de is_resource weggehaald en het werkt perfect. Ik had de documentatie van PHP7 beter moeten lezen..
 
Thomas van den Heuvel

Thomas van den Heuvel

29/01/2016 19:34:49
Quote Anchor link
Los van dit alles.

Als de query in de functie checkBlocked() geen resultaten oplevert dan retourneert deze functie true?

Wat?

Ik hoop dat alles goed gedocumenteerd is, maar als ik dit zo zie (global $db_cas? Tijd voor een database wrapper class?) wordt het (hoog) tijd voor het herschrijven van deze ... code.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.