Avatar billede kjaergaard_anders Nybegynder
21. oktober 2013 - 16:13 Der er 5 kommentarer og
1 løsning

søg i mysqli db med $_post

Hej jeg er ved at søge i en mysqli db, og jeg har en $_POST array som udskriver
0.0', '0.1', '1.5', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '2.8', '2.9', '2.10', '2.11', '2.12', '3.0', '4.0', '5.0', '6.1', '6.0', '127.0', '2.13', '0.4', '5.1

jeg vil gerne søge i db efter en eller flere af de tal og udskriv deres post fra db, men jeg får intet resultat, hvordan søger jeg med et array i mysqli db ???

<?php
require_once 'includes/dbConn.php';

$codearr = $_POST[code];

$codestr = implode("', '", $codearr);




if ($SideData = $mysqli->prepare("SELECT * FROM sms_traffic WHERE status IN (' . $codestr . ') ORDER BY status; ")){

    //hvis du vil søge efter en bestemmt ting i db, skal du bruge bind param.
    $SideData->bind_param("s", $codestr);

    /* Eksekver forespørgslen */
    $SideData->execute();

    /* Bind resultatet */
    $SideData->bind_result($showCode);

while ($SideData->fetch()) {


    echo $showCode .'<br>';
   


}}

?>
Avatar billede arne_v Ekspert
21. oktober 2013 - 16:19 #1
Man kan ikke bruge parameters med IN, da parameters er for enkelt vaerdier.
Avatar billede kjaergaard_anders Nybegynder
22. oktober 2013 - 20:49 #2
Hej arne tak for svaret, det fik mig til at se efter en anden løsning, og jeg kom op med den her, som virker efter hensigten. Du må gerne smide et svar :-)


$query = "SELECT * FROM sms_traffic";

    if ($result = $mysqli->query($query)) {

        /* fetch object array */
        //printf ("%s (%s)\n %s %s %s %s %s %s %s %s %s", $row[0], $row[1], $row[2], $row[3], $row[4], $row[5], $row[6], $row[7], $row[8], $row[9], $row[10]);
        ?>
        <div class="CSSTableGenerator" >
            <table >
    <?php
    while ($row = $result->fetch_row()) {

        echo '<tr>';

        printf("%s %s %s %s %s %s %s",
                '<td >+' . $row[2] . '</td>',
                '<td >' . $row[6] . '</td>',
                '<td >' . $row[7] . '</td>',
                '<td >' . $row[9] . '</td>',
                '<td >' . $row[13] . '</td>',
                '<td >' . $row[4] . '</td>',
                '<td class = "textwidth">' . $row[8] . '</td>');

        echo '</tr>';
    }

    /* free result set */
    $result->close();
Avatar billede tobrukDk Novice
22. oktober 2013 - 23:37 #3
Jeg vil nok ligge på det her:

http://www.w3schools.com/sql/sql_like.asp


<?php
require_once 'includes/dbConn.php';
$codearr = $_POST[code];
$codestr = implode("', '", $codearr);

if ($SideData = $mysqli->prepare("SELECT * FROM sms_traffic WHERE status IN (' . $codestr . ') ORDER BY status; ")){
    $SideData->bind_param("s", $codestr);
    $SideData->execute();
    $SideData->bind_result($showCode);
   
    //while her
    while ($SideData->fetch()) {
        echo $showCode .'<br>';
    }
    //lukker her
}
?>
Avatar billede arne_v Ekspert
24. oktober 2013 - 00:54 #4
$SideData->bind_param("s", $codestr);

har ingen funktion bortset fra evt. at give en fejl - der er jo ingen ? i den SQL som prepares
Avatar billede arne_v Ekspert
24. oktober 2013 - 00:56 #5
men man kan naturligvis godt bruge en variabel i den SQL man preparer

men man skal saa beskytte sig mod SQL injection som i gamle dage inden prepare
Avatar billede arne_v Ekspert
24. oktober 2013 - 00:56 #6
og et svar
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