Hallo,

Ik heb deze zoekfunctie overgenomen:
https://www.phphulp.nl/php/tutorial/overig/zoeken-in-mysql-tabel/100/tonen-van-het-resultaat-in-php/174/

die heb ik veranderd in MYSQLI (i.p.v MYSQL ) , alleen krijg ik in de MYSQLI versie geen resultaat terug.


////////////////////////////// MYSQL /////////////////////////////


  

<?php 
  if (!@mysql_select_db("test", @mysql_connect("localhost", "test", "x")))
    {
        echo "Er kan geen database connectie gemaakt worden.";
        exit();
    }
    $sql = "SELECT * FROM me_events WHERE title LIKE '%" . mysql_real_escape_string($_POST['zoekterm']) . "%'";
    $res = mysql_query($sql);
    if (mysql_num_rows($res) >= 1)
    {
        while ($row = mysql_fetch_array($res))
        {
            echo '<p>Resultaat dat: <b>' . $row['id'] . '</b><br>'; 
            echo 'Resultaat tekst: <b>' . htmlspecialchars($row['title']) . '</b></p>';
        }      
        echo '<a href="zoek.php" title="zoek opnieuw">zoek opnieuw</a>';
    }
    else
    {
        echo '<p>Er is niets gevonden op jou zoekterm: <b>' . $_POST['zoekterm'] . '</b></p>';
        
        echo '<p><a href="zoek.php" title="zoek opnieuw">zoek opnieuw</a></p>';
    }
?>

////////////////////////////// MYSQLI /////////////////////////////
<?php 
   echo "Welcome ". $_POST['zoekterm']. "<br />";
   
   $query = $mysqli->query("SELECT *  FROM me_events WHERE title LIKE '%" . mysqli_real_escape_string($_POST['zoekterm']) . "%'");
	  
    $res = mysqli_query($query);
    if (mysqli_num_rows($res) >= 1)
    {
        while ($row = mysqli_fetch_array($res))
        {
            echo '<p>Resultaat id: <b>' . $row['id'] . '</b><br>';
            echo 'Resultaat tekst: <b>' . htmlspecialchars($row['title']) . '</b></p>';
        }
        
        echo '<a href="zoek-form.php" title="zoek opnieuw">zoek opnieuw</a>';
    }
    else
    {
        echo '<p>Er is niets gevonden op jou zoekterm: <b>' . $_POST['zoekterm'] . '</b></p>';
        
        echo '<p><a href="zoek-form.php" title="zoek opnieuw">zoek opnieuw</a></p>';
    }
?>

Haal die @ er uit; geen foutmeldingen onderdrukken.
Zet error reporting aan.
Van mysql naar mysql is meer dan alleen een i toevoegen.
Lijn 32/34 kloppen ook niet.

Of je gebruikt procedureel, met mysqli_query (..)
Of je gebruikt OOP (Object Oriënted) met $mysqli->query (...)

Maar beiden doorelkaar is vragen om problemen.
Obelix en Idefix op 27/11/2016 18:37:52

Haal die @ er uit; geen foutmeldingen onderdrukken.
Zet error reporting aan.
Van mysql naar mysql is meer dan alleen een i toevoegen.



Die staat erin geeft geen melding
[code]<?php error_reporting( E_ALL ); ?>

Haal die @ er uit; geen foutmeldingen onderdrukken. ?

Zie mijn post ^



   <?php $query = $mysqli->query("SELECT *,
    FROM me_events WHERE title LIKE '%" . mysqli_real_escape_string($_POST['zoekterm']) . "%'");
	  
    $res = "mysqli->query($query)";
    if (mysqli_num_rows($res) >= 1)  // A
    {
        while ($row = mysqli_fetch_array($res)) //B
        { ?>


Dan zal nu A en B nog niet goed zijn.
Er klopt weinig van. Je maakt een query en die gooi je in een andere querie? En ook nog steeds procedurele code gemengd met OOP code.
En dan een query tussen quotes.

Kortom: Een rommeltje! Ik zal zodra ik thuis ben ook je UBBcodes in je post even fatsoeneren.
Sorry ik heb nu


   $query = $mysqli->query("SELECT *,
    FROM me_events WHERE title LIKE '%" . mysqli_real_escape_string($_POST['zoekterm']) . "%'");
	  
    $res = "mysqli->query($query)";	
    if ($result = $mysqli->query(($res) >= 1))
    {
       	while ($row = $result->fetch_object()){
            echo...



Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in ...zoek-resultaat.php on line 8

Warning: mysqli::query(): Empty query in ....zoek-resultaat.php on line 15


   $res = $mysqli->query("SELECT *,
    FROM me_events WHERE title LIKE '%" . $mysqli->real_escape_string($_POST['zoekterm']) . "%'");
    if ($mysqli->num_rows(($res) >= 1))
    {
       	while ($row = $result->fetch_object()){
            echo...


Dit is een stuk beter!

Pierre Web op 27/11/2016 20:21:01

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in ...zoek-resultaat.php on line 8

Obelix en Idefix op 27/11/2016 18:37:52

Van mysql naar mysql is meer dan alleen een i toevoegen.

Al opgezocht hoe de syntax is van mysqli_real_escape_string is?
Kijk bv. eens op https://stackoverflow.com/questions/25636975/warning-mysqli-real-escape-string-expects-exactly-2-parameters-1-given-wh (even zoeken met Google op je foutmelding).
Maar beiden doorelkaar is vragen om problemen.

Strikt genomen maakt dit niet uit, MySQLi werkt enkel met objecten. Of dit verstandig is is een tweede.

Lijn 34 is gewoon fout, de topicstarter probeert hier (opnieuw) een query uit te voeren met een mysqli_result object (of false, afhankelijk van het slagen van de query op regel 32).

Reageren