0

i need help to fix my query so that i can get results and set it on rows. Please help i'm new in sql

I'm getting this error: mysql_num_rows() expects parameter 1 to be resource, boolean given

The variable $deets is the same as inserted on the db..

My code:

 <?php
 $deets = $_POST['deets'];
 $deets = preg_replace('#[^0-9/]#i', '', $deets);

 include ("connect.php");


 $events = '';
 $query = mysql_query('SELECT H.hora FROM horario H WHERE NOT EXISTS(SELECT EV.idhora     FROM eventos EV WHERE  H.hora = EV.idhora AND data= "'.$deets.'")');
 $num_rows = mysql_num_rows($query);
 if($num_rows > 0) {
$events .= '<div id="eventsControl"><button class="btn2" style=" float:right;" onMouseDown="overlay()"><b>Fechar</b></button><p><b> ' . $deets . '</b></p></div> <br />';

while($row = mysql_fetch_array($query)) {

    $desc = $row['hora'];
    $form = "<form style='float:right;' action='marcarhora.php' method='post'><input type='hidden' name='gethora' value='$desc '><input type='hidden' name='getdate' value='$deets '><input type='hidden' name='getuser' value='{$_SESSION["email"]}'>"; 



    $desc1 = "<input type='submit'  class='btn1' name='insert' value='Marcar Hora'/></form>";
    $events .= '<div id="eventsBody">' . $desc . '&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;'.$form .$desc1. '<br /><hr><br /></div>';
}
   }

   echo $events;
  ?>
Heena Goyal
  • 386
  • 3
  • 17
Frank021
  • 123
  • 2
  • 11
  • also, don't use mysql_* functions as they are deprecated in newer versions of php. read into using mysqli_* functions instead. your mysql_query call is failing, hence it's returning false and giving your error. – flauntster Apr 02 '14 at 05:37
  • i think erro in query simple add or die(mysql_error()) after query. – Nanhe Kumar Apr 02 '14 at 05:55

2 Answers2

2
<?php
$deets = $_POST['deets'];
$deets = preg_replace('#[^0-9/]#i', '', $deets);

include("connect.php");


$events = '';

// use $res not $query, as mysql_query returns a result not a query
//$query = mysql_query('SELECT H.hora FROM horario H WHERE NOT EXISTS(SELECT EV.idhora     FROM eventos EV WHERE  H.hora = EV.idhora AND data= "' . $deets . '")');
// you are using wrong " quotes to encapsulate value, given that $deets should be a number (as you have filtered it above, then you don't even need need quotes around it 
$sql = "SELECT H.hora FROM horario H WHERE NOT EXISTS(SELECT EV.idhora     FROM eventos EV WHERE  H.hora = EV.idhora AND data= '{$deets}')";

// always check for errors, in case query failed
$res = mysql_query($sql) or die(mysql_error());

$num_rows = mysql_num_rows($res);

if ($num_rows > 0) {
    $events .= '<div id="eventsControl"><button class="btn2" style=" float:right;" onMouseDown="overlay()"><b>Fechar</b></button><p><b> ' . $deets . '</b></p></div> <br />';

    // mysql_fetch_array is not necessary unless you need both numeric and textual indexing
//    while ($row = mysql_fetch_array($query)) {
    while ($row = mysql_fetch_assoc($res)) {

        $desc = $row['hora'];
        $form = "<form style='float:right;' action='marcarhora.php' method='post'><input type='hidden' name='gethora' value='$desc '><input type='hidden' name='getdate' value='$deets '><input type='hidden' name='getuser' value='{$_SESSION["email"]}'>";


        $desc1 = "<input type='submit'  class='btn1' name='insert' value='Marcar Hora'/></form>";
        $events .= '<div id="eventsBody">' . $desc . '&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;' . $form . $desc1 . '<br /><hr><br /></div>';
    }
}

echo $events;
?>
bumperbox
  • 9,990
  • 6
  • 42
  • 65
1

Once try running your query in phpmyadmin.Is it giving you the result? There may be a simple mistake on your query. This error is caused if the result set returns false value from your query Read here also try switching to either MySQLi or PDO coz MySql is not supported in PHP5.5+ http://www.php.net/manual/en/migration55.deprecated.php

Also once try:

//    this may help you knowing your error more precisely
$resultSet = mysql_query('your query') or die('SQL Error :: '.mysql_error());
Robz
  • 1,110
  • 3
  • 14
  • 35