das: Warning: mysqli_error() expects exactly 1 parameter, 0 given in

hallo.
wenn ich die index.php seite öffnen will, erscheint folgender fehler:

Warning: mysqli_error() expects exactly 1 parameter, 0 given in..

ich verstehe nicht was da falsch läuft, die verbindung zur datenbank ist da, weil wenn man die seite "/administrator" aufruft, kommt man ganz normal ins backend der seite.

ich teste das über localhost (xampp), das php skript ist aus nem tutorial und funktioniert eig auch (auf meinem mac), auf pc kommt der fehler.

hier noch der code

danke für eure hilfe!

  
<?php  
session_start();  
/* Created by Adam Khoury @ www.developphp.com */  
  
require_once "scripts/connect_to_mysql.php";  
// Determine which page ID to use in our query below ---------------------------------------------------------------------------------------  
if (!$_GET['pid']) {  
	$pageid = '1';  
} else {  
	$pageid = ereg_replace("[^0-9]", "", $_GET['pid']); // filter everything but numbers for security  
}  
// Query the body section for the proper page  
$sqlCommand = "SELECT pagebody FROM pages WHERE id='$pageid' LIMIT 1";  
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());  
while ($row = mysqli_fetch_array($query)) {  
    $body = $row["pagebody"];  
}  
mysqli_free_result($query);  
//---------------------------------------------------------------------------------------------------------------------------------------------------------------  
// Query the module data for display ---------------------------------------------------------------------------------------------------------------  
$sqlCommand = "SELECT modulebody FROM modules WHERE showing='1' AND name='footer' LIMIT 1";  
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());  
while ($row = mysqli_fetch_array($query)) {  
    $footer = $row["modulebody"];  
}  
mysqli_free_result($query);  
//---------------------------------------------------------------------------------------------------------------------------------------------------------------  
// Query the module data for display ---------------------------------------------------------------------------------------------------------------  
$sqlCommand = "SELECT modulebody FROM modules WHERE showing='1' AND name='custom1' LIMIT 1";  
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());  
while ($row = mysqli_fetch_array($query)) {  
    $custom1 = $row["modulebody"];  
}  
mysqli_free_result($query);  
//---------------------------------------------------------------------------------------------------------------------------------------------------------------  
// Build Main Navigation menu and gather page data here -----------------------------------------------------------------------------  
$sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY id ASC";  
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());  
  
$menuDisplay = '';  
while ($row = mysqli_fetch_array($query)) {  
    $pid = $row["id"];  
    $linklabel = $row["linklabel"];  
	  
	$menuDisplay .= '<a href="index.php?pid=' . $pid . '">' . $linklabel . '</a><br />';  
	  
}  
mysqli_free_result($query);  
//---------------------------------------------------------------------------------------------------------------------------------------------------------------  
//mysqli_close($myConnection);  
?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>My Website</title>  
<style type="text/css">  
<!--  
body,td,th {  
	font-family: Arial Black, Gadget, sans-serif;  
	font-size: 12px;  
}  
body {  
	background-image: url(style/stripBG.jpg);  
	background-repeat: repeat-x;  
	color:#FFF;  
	background-color: #996600;  
}  
a:link {  
	color: #FBE7B7;  
	text-decoration: none;  
}  
a:visited {  
	text-decoration: none;  
	color: #FBE7B7;  
}  
a:hover {  
	text-decoration: underline;  
	color: #FFF;  
}  
a:active {  
	text-decoration:none;  
	color: #FFF;  
}  
-->  
</style></head>  
  
<body>  
<table width="888" border="0" align="center" cellpadding="6">  
  <tr>  
    <td align="center"><table width="100%" border="0" cellpadding="8">  
      <tr>  
        <td colspan="2"><table width="100%" border="0">  
          <tr>  
            <td width="46%"><a href="index.php"><img src="style/logo.png" alt="My Magic Site Logo" width="360" height="80" border="0" /></a></td>  
            <td width="54%" valign="top" bgcolor="#150D00"><?php echo $custom1; ?></td>  
          </tr>  
        </table>  
      </td>  
        </tr>  
      <tr>  
        <td width="22%" valign="top" bgcolor="#150D00" style="border:#6B450C thin solid; line-height:1.5em;">  
		<?php echo $menuDisplay; ?>  
          </td>  
        <td width="78%" valign="top" bgcolor="#150D00" style="border:#6B450C thin solid;">  
        <div style="width:656px; height:400px; overflow: auto;"><?php echo $body; ?></div>  
        </td>  
      </tr>  
      <tr>  
        <td colspan="2" bgcolor="#150D00" style="border:#6B450C thin solid;"><?php echo $footer; ?>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>  
        </tr>  
    </table>  
    &copy;Copyright 2009 Developphp.com</td>  
  </tr>  
</table>  
<div align="center"><a href="administrator">Admin</a></div><br />  
</body>  
</html>  

  1. sry hab was vergessen..

    ihr braucht wahrscheinlich nicht den ganzen code, also in der fehlermeldung steht "line 38" und das ist die hier:
    $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

    1. ok jetzt funktioniert es fast..

      wen es interessiert:
      das hier..
      $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

      in das ändern..
      $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error($myConnection));

      jetzt bekomme ich nur noch folgende meldung:

      Unknown column 'linklabel' in 'field list'

      die seite wird mir immer noch nicht angezeigt, evt noch ne idee?

      1. Grüße,
        1)du solltest weder GET noch POST direkt in die querys einbauen
        2)du solltest weder GET noch POST direkt in die querys einbauen
        3)du solltest weder GET noch POST direkt in die querys einbauen
        4)du solltest weder GET noch POST direkt in die querys einbauen
        5)du solltest weder GET noch POST direkt in die querys einbauen
        6)du solltest weder GET noch POST direkt in die querys einbauen
        7)du solltest weder GET noch POST direkt in die querys einbauen

        und wie erwartest du hilfe, wenn du uns weder die querys noch tabellenstruktur mitteilst?
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
        1. ok jetzt funktioniert alles, da war was in der datenbank falsch benannt..
          trotzdem danke an alle die sich damit beschäftigt haben!

          1)du solltest weder GET noch POST direkt in die querys einbauen

          ehm, also erstma ich kenn mich noch nicht besonders gut mit php aus.
          ich hab jetzt in meinem code gar kein GET oder POST gefunden..
          aber warum sollte ich das nicht machen?
          bzw wie kann ich es besser machen?

          danke!

          1. Grüße,

            ehm, also erstma ich kenn mich noch nicht besonders gut mit php aus.
            ich hab jetzt in meinem code gar kein GET oder POST gefunden..
            aber warum sollte ich das nicht machen?

            echt? lesen hilft, 3tte zeile bei dir:

            if (!$_GET['pid']) {
                    $pageid = '1';
            } else {
                    $pageid = ereg_replace("[^0-9]", "", $_GET['pid']); // filter everything but numbers for security
            }

            das ist zwar "geschützt" aber weder üblich noch sinnvoll - das ergebniss mit 1 zu multiplizieren und/oder parseint wäre sinvoller
            MFG
            bleicher

            --
            __________________________-

            FirefoxMyth
            1. ok danke euch beiden!

              das wird wohl noch etwas dauern bis ich sichere php codes schreiben kann..

            2. hallo,

              [...] das ergebniss mit 1 zu multiplizieren und/oder parseint wäre sinvoller

              in PHP ist es intval, nicht parseInt

              ... und eben gefunden: intval != parseInt, wenn ich das richtig verstanden habe.

              grüße,
              henman

              --
              "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
          2. Hi!

            ehm, also erstma ich kenn mich noch nicht besonders gut mit php aus.

            Das ist das Gefährliche daran: je weniger man sich auskennt, desto mehr Fehler kann man machen. Das Gute daran: man kann aus Fehlern lernen - manchmal sogar bevor diese begangen werden - aber dies ist eher der Wunschgedanke (deutscher?) Eltern im Hinblick auf den Nachwuchs;)

            ich hab jetzt in meinem code gar kein GET oder POST gefunden..

            bleicher wollte Dir mitteilen, dass Du Informationen -ungeprüft_ in Deine Query übernimmst - das ist ganz schlecht! Im Web-Umfeld werden Daten via HTTP und meistens per GET- oder POST-Methode übertragen.

            aber warum sollte ich das nicht machen?

            Weil Dir jemand etwas 'unterschieben' kann, was Du nicht willst - zum Beispiel eine Anweisung, die Deine intendierte Anfrage an den Datenbankserver so verfälscht, dass Daten manipuliert werden können.

            bzw wie kann ich es besser machen?

            Überprüfe _alle_ Eingaben, deren Herkunft Du nicht kennst - also alle, welche nicht von Dir stammen;)

            Erwartest du als Eingabe eine Ganzzahl: dann prüfe, ob eine Ganzzahl vorliegt!
            Erwartest du als Eingabe eine dreistellige Nummer: dann prüfe hierauf!

            etc.

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        2. Hi!

          1)du solltest weder GET noch POST direkt in die querys einbauen

          Was ist an ~~~SQL

          UPDATE bleicher SET message='GET up Darling - POST ist da!'
          WHERE threadId=19730

            
          off:PP  
            
            
          
          -- 
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)  
          
          
          1. Grüße,

            Was ist an ~~~SQL

            UPDATE bleicher SET message='GET up Darling - POST ist da!'
            WHERE threadId=19730

              
            alles - denn ich bin unverbesserlich und threadId ist 197301!  
            MFG  
            bleicher
            
            -- 
            \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_-  
            ![](http://img296.imageshack.us/img296/9641/minibannerso7.jpg)  
              
            [FirefoxMyth](http://www.firefoxmyths.com)
            
        3. Grüße,
          1)du solltest weder GET noch POST direkt in die querys einbauen
          2)du solltest weder GET noch POST direkt in die querys einbauen
          3)du solltest weder GET noch POST direkt in die querys einbauen
          4)du solltest weder GET noch POST direkt in die querys einbauen
          5)du solltest weder GET noch POST direkt in die querys einbauen
          6)du solltest weder GET noch POST direkt in die querys einbauen
          7)du solltest weder GET noch POST direkt in die querys einbauen

          versuchs damit:

          1. Du sollst $_SERVER  (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          2. Du sollst $_GET     (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          3. Du sollst $_POST    (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          4. Du sollst $_FILES   (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          5. Du sollst $_COOKIE  (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          6. Du sollst $_SESSION (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          7. Du sollst $_REQUEST (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
          1. Hi suit.

            1. Du sollst $_SERVER  (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            2. Du sollst $_GET     (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            3. Du sollst $_POST    (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            4. Du sollst $_FILES   (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            5. Du sollst $_COOKIE  (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            6. Du sollst $_SESSION (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.
            7. Du sollst $_REQUEST (oder Teile draraus) nicht direkt oder ungeprüft in eine Abfrage einbauen.

            Warum nicht?

            Was prueft denn z.B. der phpMyAdmin, wenn man eine SQL-Abfrage eingibt? Bzw. was sollte er pruefen?

            (AFAIR fragt er - bei eingeschaltetem JavaScript - nach einer Bestaetigung, falls die Eingabe ein "DELETE"-Statement ist. Das zaehlt aber nicht ;-))

            Viele Gruesse,
            der Bademeister

            1. Was prueft denn z.B. der phpMyAdmin, wenn man eine SQL-Abfrage eingibt? Bzw. was sollte er pruefen?

              Ausnahmen bestätigen die Regel - wer in einem SQL-Frontend eingeloggt ist, braucht sich üblicherweise nicht mit Injections herumzuspielen - bei einem Syntaxfehler erhält er die Fehlermeldung ebenfalls gleich.

  2. Hi,

    neben dem bereits von anderen erwähnten Dingen:

    $pageid = ereg_replace("[^0-9]", "", $_GET['pid']); // filter everything but numbers for security

    ereg_* sollte nicht mehr verwendet werden, das soll demnächst entfernt werden aus PHP.

    Wenn tatsächlich Regex benötigt wird, durch preg_* ersetzen (mit entsprechend angepaßtem Regex).

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.