Avatar billede ibandersson Juniormester
13. januar 2017 - 16:39 Der er 15 kommentarer og
1 løsning

kan ikke få værdier ud af db

Hej jeg har en simpel test af udtag fra db.
Jeg har hørt at der er kommet opdateringer til mysql.

Jeg har dette i min db

<?
include_once ("include/conn_mysql.php");
$query = mysql_query("SELECT * FROM mikkelsenhvemkigger");
    while ($row = mysql_fetch_array($query)) {

        echo    $ipnr      =  $row['ipnr'];
        echo    $browsernavn=  $row['browsernavn'];
        echo    $servertime =  $row['servertime'];
        echo    $s_name    =  $row['s_name'];
}
?>

men får fejl når jeg vil echo det
Avatar billede olsensweb.dk Ekspert
13. januar 2017 - 16:51 #1
>men får fejl når jeg vil echo det
hvilken fejl får du ??

hvorfor anvender du short_open_tag ?? har givet problemer før.
hvorfor anvender du stadig det gamle mysql API ?? fjernet i PHP7
Avatar billede michael_stim Ekspert
13. januar 2017 - 16:57 #2
Först og fremmest #1

$ipnr      =  $row['ipnr'];
$browsernavn=  $row['browsernavn'];
$servertime =  $row['servertime'];
$s_name    =  $row['s_name'];

echo    $ipnr;
echo    $browsernavn;
echo    $servertime;
echo    $s_name;
Avatar billede olsensweb.dk Ekspert
13. januar 2017 - 17:02 #3
#2
selvføgelig :)
så mange fejl på så lidt code.

men det burde fejl meldingen gerne sige.
Avatar billede ibandersson Juniormester
13. januar 2017 - 18:15 #4
Warning: mysql_query():  mysql_fetch_array() expects parameter 1 to be resource, boolean given in /customers/0/0/e/mikkelsen-transport.dk/httpd.www/testdb.php on line 4
Avatar billede michael_stim Ekspert
13. januar 2017 - 18:24 #5
Har du en tabel der hedder mikkelsenhvemkigger?
Avatar billede olsensweb.dk Ekspert
13. januar 2017 - 18:44 #6
din query retunere ikke noget.
så som michael_stim skriver, kunne det være din tabel der er forkert, måske også din connection, der mangler

hvis filen du includerer er vigtig så brug require
hurtigt omskrevet til mysqli Procedural Style
(utested)

<?php
require_once("include/conn_mysqli.php");
$query = mysqli_query($mysqli, "SELECT * FROM mikkelsenhvemkigger");
    while ($row = mysqli_fetch_assoc($query)) {
        $ipnr      =  $row['ipnr'];
        $browsernavn=  $row['browsernavn'];
        $servertime =  $row['servertime'];
        $s_name    =  $row['s_name'];

        echo    $ipnr;
        echo    $browsernavn;
        echo    $servertime;
        echo    $s_name;
}
?>


conn_mysqli.php
(utested)

<?php
// http://php.net/mysqli_connect Procedural style
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$mysqli) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
// echo 'Success... ' . mysqli_get_host_info($mysqli) . "\n";
?>
Avatar billede ibandersson Juniormester
13. januar 2017 - 18:55 #7
Koden ser sådan ud

<?php
// Create connection
include_once("include/conn_mysqli.php");
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id,ipnr,browsernavn,servertime,s_name FROM mikkelsenhvemkigger";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row  = mysqli_fetch_assoc($result)) {
    $ipnr      =  $row['ipnr'];
    $browsernavn=  $row['browsernavn'];
    $servertime =  $row['servertime'];
    $s_name    =  $row['s_name'];
   
    echo    $ipnr;
    echo    $browsernavn;
    echo    $servertime;
    echo    $s_name;
    }
} else {
    echo "0 results";
}
?>
</body>
</html>

Resultat i browseren er sådan ud

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /customers/0/0/e/mikkelsen-transport.dk/httpd.www/testdb.php on line 13 0 results


DB ser sådan ud

Full texts   
id    ipnr              browsernavn servertime                    servername
476 10.27.13.27  Apache        2017-01-12 17:21:57  mikkelsen
477 10.27.13.27  Apache        2017-01-13 17:25:43  mikkelsen

hvad fanden der galt ??
Avatar billede michael_stim Ekspert
13. januar 2017 - 18:59 #8
Hvor har du s_name fra?
Avatar billede olsensweb.dk Ekspert
13. januar 2017 - 19:40 #9
prøv at lave en if omkring din query, og fjern $s_name som michael_stim skriver, da du ikke selecter den


<?php
// Create connection
require_once("include/conn_mysqli.php");
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


$sql = "SELECT id,ipnr,browsernavn,servertime FROM mikkelsenhvemkigger";
if ($result = mysqli_query($conn, $sql)) {
   
    /* determine number of rows result set */
    $row_cnt = mysqli_num_rows($result);
    printf("Result set has %d rows.\n", $row_cnt);

    // output data of each row
    while($row  = mysqli_fetch_assoc($result)) {
    $ipnr      =  $row['ipnr'];
    $browsernavn=  $row['browsernavn'];
    $servertime =  $row['servertime'];   
   
    echo "<br>";
    echo    $ipnr;
    echo    $browsernavn;
    echo    $servertime;   
    }
}
else {
    echo "0 results";
}
?>
Avatar billede ibandersson Juniormester
13. januar 2017 - 20:20 #10
bingo det var s_name der drillede. tak.
Avatar billede ibandersson Juniormester
13. januar 2017 - 20:24 #11
men prøv at forklare hvorfor s_name drillede, den er da med alle steder, både SELECT, while og echo.

måske det er et ord som speciel i fht. PHP og mysql
Avatar billede michael_stim Ekspert
13. januar 2017 - 20:27 #12
Findes den i databasen? Servername måske.
Avatar billede olsensweb.dk Ekspert
13. januar 2017 - 21:59 #13
#12
meget ledende spm :)

@ibandersson
du kan ikke selecte en collone der ikke findes!!


en bedre løsning kunne være at sette or die på din query

her er serverna ikke en valid collone, da den hedder servername, men prøv den, og se fejl beskeden.
du kan også prøve at skrive forkert i dit tabel navn, og se den fejl besked.


$sql = "SELECT id,ipnr,browsernavn,servertime,serverna FROM mikkelsenhvemkigger";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
   
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
printf("Result set has %d rows.\n", $row_cnt);

// output data of each row
while($row  = mysqli_fetch_assoc($result)) {
    $ipnr          =  $row['ipnr'];
    $browsernavn=  $row['browsernavn'];
    $servertime =  $row['servertime'];
    $servername = $row['servername'];


    echo "<br>";
    echo $ipnr;
    echo $browsernavn;
    echo $servername;
    echo $servertime;   
}
Avatar billede ibandersson Juniormester
14. januar 2017 - 11:22 #14
Ja stim

som jeg skrev findes den i DB
men PHP eller mysql kan nok ikke li det navn

Full texts    i db
id    ipnr              browsernavn servertime                    servername
476 10.27.13.27  Apache        2017-01-12 17:21:57  mikkelsen
477 10.27.13.27  Apache        2017-01-13 17:25:43  mikkelsen
Avatar billede michael_stim Ekspert
14. januar 2017 - 11:48 #15
Kan stadig ikke se s_name, derimod kan jeg se servername.
Avatar billede olsensweb.dk Ekspert
14. januar 2017 - 11:52 #16
#14
>som jeg skrev findes den i DB
ref: id, ipnr, browsernavn, servertime, servername (komma indsat for overskuelighedes skyld)
du har da ikke en collonne der hedder s_name, jf den tabel du visser, og derfor virkede din query ikke.

men jeg skrev i #13, sæt en or die(mysqli_error($conn)) på din query.

>men PHP eller mysql kan nok ikke li det navn
hvis du er i tvivl om hvilke navne du IKKE må bruge som collonne navne, kan du kigge på de reseverede ord i mysql og PHP
http://dev.mysql.com/doc/refman/5.7/en/keywords.html
http://php.net/manual/en/reserved.keywords.php


hvis man er så uheldig at anvende et reseverede sql ord som collonne navn skal man sætte backtick omkring navnet i sql, eller bedre omdøbe collonnen
http://stackoverflow.com/questions/261455/using-backticks-around-field-names
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester