3 Stimmen

PHP Warning: mysql_query() erwartet, dass Parameter 1 ein String ist

Mögliches Duplikat:
mysql_fetch_array() erwartet, dass Parameter 1 eine Ressource ist, ein boolscher Wert, der in select angegeben wurde

Hoffentlich eine schnelle Antwort für einen von euch da draußen.

Ich erhalte zwei Fehler, die sich auf :

Warning: mysql_query() erwartet Parameter 1 als Zeichenkette, Array angegeben

Mein Code lautet wie folgt...

 <?php
#
#  FUTURE EVENTS
#

# PAGE SELECTOR FUNCTION
function pageselector ($pagenum, $pages, $arg, $perpage) {
  #page we're loading
  if (!$pagenum) $pagenum=1;
  # PRINT PAGE SELECTOR
  $pages=ceil($pages/$perpage);
  #last = prev page unless we're already at page 1
  if ($pagenum==1) {$last=1;}     else {$last=$pagenum-1;}
  #next = next page unless we have no more pages to display
  if ($pagenum==$pages) $next=$pagenum;     else $next=$pagenum+1;
  #create page numbers
  $pagenumbers="";
  for ($i=1; $i<=$pages; $i++) {
      if ($i==$pagenum)
          $pagenumbers.=$i.' ';
      else
      $pagenumbers.="<a href=\"?pagenum=$i$arg\">$i</a> "; 
        }
  # create page num in case of blank page
  if (!$pagenumbers) {
    $pagenumbers="<a href=\"?pagenum=1$arg\">1</a> "; 
      }
print <<< pageSelector
<div class="pageselector">
Page: 
<a href="?pagenum=1$arg">&laquo;</a> <a href="?pagenum=$last$arg">&lsaquo;</a> 
$pagenumbers
<a href="?pagenum=$next$arg">&rsaquo;</a> <a href="?pagenum=$pages$arg">&raquo;</a>
</div><br />
pageSelector;
  return $pagenum;
  }

$perpage=3;
$now=time()-(1 * 24 * 60 * 60);
$sql="SELECT count(*) AS total FROM event_tbl WHERE dates>'$now'";
$sql=mysql_query($sql);

$pagenum=pageselector ($pagenum, $sql['total'], '', $perpage);

$eventlist=array();
$sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC";
$sql=mysql_query($sql);
$sql=mysql_fetch_array($sql);
while ($sqlevent=mysql_query($sql)){
  $eventlist[]=$sqlevent['id'];
    }

for ($i=0; $i<$perpage; $i++) {
  $tempid=($perpage*($pagenum-1))+$i;
  $sql="SELECT * FROM event_tbl WHERE id='$eventlist[$tempid]'";
  $sql=mysql_query($sql);
  $smallevent=mysql_query($sql);
    if ($smallevent['dates']==0)
      break;
  print '<div>';
    $smallevent['description']=strip_tags($smallevent['description'], '<img>');
  $shortdescription=substr($smallevent['description'], 0, 350);
  print '<span style="font-size: 14px;"><b><a href="./event.php?event='.$smallevent['id'].'">'.$smallevent['name'].'</a></b> - <b>Date:</b> '.date('j/n/Y', $smallevent['dates']).' - <b>Price:</b> ';
    $places=$smallevent['placesavailable']-$smallevent['placesbooked'];
    if ($places>0)
    print '&pound;'.$smallevent['price'].'<br />';
  else 
    print '<span class="soldout">SOLD OUT</span><br />';
    print '</span><br />';
    print $shortdescription.'...';
    print '<br /><br />';
    print '<a href="./tellfriend.php?event='.$smallevent['id'].'"><img src="./images/link-tellfriend.png" alt="" /></a> &nbsp;';
    print '<a href="http://maps.google.com/maps?daddr='.$smallevent['postcode'].'" target="_blank"><img src="./images/link-directions.png" alt="" /></a> &nbsp;';
    print '<a href="./event.php?event='.$smallevent['id'].'"><img src="./images/link-info.png" alt="" /></a> &nbsp;';
    if ($smallevent['bookless']==0 & $places>0)
      print '<a href="./bookevent.php?event='.$smallevent['id'].'"><img src="./images/link-book.png" alt="" /></a> ';
    print '</div><br /><br />';
    }
?>

Die beiden Fehlerzeilen lauten:

while ($sqlevent=mysql_query($sql)){  
$eventlist[]=$sqlevent['id'];   }

$smallevent=mysql_query($sql);

Ich habe eine DB-Connect-Datei (obwohl ich mir nicht sicher bin, ob sie auslöst oder nicht??)

Jede Hilfe ist willkommen.

Prost

6voto

Lightness Races in Orbit Punkte 367630
$eventlist=array();
$sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC";
$sql=mysql_query($sql);
$sql=mysql_fetch_array($sql);
while ($sqlevent=mysql_query($sql)){
  $eventlist[]=$sqlevent['id'];
}

Der Fehler ist ziemlich eindeutig. Aus irgendeinem Grund (ich weiß nicht, warum), rufen Sie mysql_query wieder mit einem Array.

Vielleicht meinten Sie:

$eventlist=array();
$sql = "SELECT * FROM event_tbl WHERE dates > '$now' ORDER BY dates ASC";
$res = mysql_query($sql);
while ($sqlevent = mysql_fetch_array($res)) {
  $eventlist[] = $sqlevent['id'];
}

2voto

krtek Punkte 25830

Sie müssen unterschiedliche Namen für Ihre Variablen verwenden. Kurz vor der fehlerhaften while :

$sql=mysql_query($sql);
$sql=mysql_fetch_array($sql);

Die zweite Zeile ordnet das Ergebnis von mysql_fetch_array auf die Variable mit dem Namen $sql die dann nicht mehr eine Zeichenkette ist. Sie können $ verwenden sql_result zum Beispiel.

Wenn ich jedoch Ihren Code lese, denke ich, dass es andere Fehler gibt. Zum Beispiel denke ich, dass Sie etwas wie dieses tun wollen:

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){
  $eventlist[] = $row['id'];
}

mysql_query dient dazu, die Ergebnisse der Abfrage zu erhalten, und dann können Sie die Ergebnisse mit mysql_fetch_array . Sie können nicht das Ergebnis von mysql_query direkt. Es gibt viele gute Beispiele in der verlinkten Dokumentation, Sie sollten sie lesen.

Das zweite Problem ist genau die gleiche Art.

0voto

Sourav Punkte 16528
$sql=mysql_fetch_array($sql);  
while ($sqlevent=mysql_query($sql)){
$eventlist[]=$sqlevent['id'];
}

$sql ist ein Array, da mysql_fetch_array ein Array zurückgibt !!! Versuchen Sie es mit einer anderen Variablen!


$eventlist=array();
$sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC";
$result=mysql_query($sql,$connection);
$sql=mysql_fetch_array($result);

....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X