PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   MySQL Fehler: Check the ... at line 1 (http://www.selfphp.de/forum/showthread.php?t=24435)

Maggi 11.10.2011 10:28:49

MySQL Fehler: Check the ... at line 1
 
Guten Morgen,

um direkt eine Probleme am Anfang zu lösen:
- ich bin MySQL und PHP-Anfänger

Wir sollen eine Abfrage generieren in der man über ein Listen-Menü und eine Schaltfläche Räume auswählen und nachdem man dieses getan hat kommt die Liste mit den PC´s, IP-Adressen und den anderen Infos dazu ...
Die Liste funktioniert nur das Menü mit dem man das wählen kann erzeugt diesen Fehler:

Code:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Sobald man die WHERE Begrenzung rausnimmt, ist alles ok, nur man kann eben nix auswählen!

Nun bitte ich einen Erfahren PHP-Guru sich mal meine vergurkte PHP-Butze anzusehen um mir dann meinen warscheinlich höchst lächerlichen Fehler ins Gesicht zu spucken ;)

Hier folgt das Drama:

PHP-Code:

<?php require_once('Connections/verwaltung.php'); ?>
<?php
$spec 
$_POST['raum_id'];

mysql_select_db($database_verwaltung$verwaltung);
$query_computer "SELECT * FROM computer INNER JOIN os ON computer.os_id = os.os_id INNER JOIN os_hersteller ON os.os_hersteller_id = os_hersteller.os_hersteller_id INNER JOIN raum ON computer.raum_id = raum.raum_id WHERE raum.raum_id = $spec";
$computer mysql_query($query_computer$verwaltung) or die(mysql_error());
$row_computer mysql_fetch_assoc($computer);
$totalRows_computer mysql_num_rows($computer);

mysql_select_db($database_verwaltung$verwaltung);
$query_device "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id ORDER BY device.device_ip  WHERE raum.raum_id = $spec";
$device mysql_query($query_device$verwaltung) or die(mysql_error());
$row_device mysql_fetch_assoc($device);
$totalRows_device mysql_num_rows($device);

mysql_select_db($database_verwaltung$verwaltung);
$query_raum "SELECT * FROM raum ORDER BY raum.raum_name";
$raum mysql_query($query_raum$verwaltung) or die(mysql_error());
$row_raum mysql_fetch_assoc($raum);
$totalRows_raum mysql_num_rows($raum);
?>
<html>
<head>
<title>Info</title>
<link href="bin/format.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" method="post" action="info.php" target="_self">
  <table width="100%" border="0">
    <tr>
      <td width="25%"><h3>Raum</h3></td>
      <td width="75%"><select name="select" id="select">
        <?php
do {  
?>
        <option value="<?php echo $row_raum['raum_id']?>"<?php if (!(strcmp($row_raum['raum_id'], $row_computer['']))) {echo "selected=\"selected\"";} ?>><?php echo $row_raum['raum_name']?></option>
        <?php
} while ($row_raum mysql_fetch_assoc($raum));
  
$rows mysql_num_rows($raum);
  if(
$rows 0) {
      
mysql_data_seek($raum0);
      
$row_raum mysql_fetch_assoc($raum);
  }
?>
      </select></td>
    </tr>
    <tr>
      <td><input type="submit" name="button" id="button" value="ausw&auml;hlen"></td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
<table width="100%" border="0">
  <tr>
    <td><h3>Computername</h3></td>
    <td><h3>Betriebssystem</h3></td>
    <td><h3>IP</h3></td>
    <td><h3>Subnet</h3></td>
    <td><h3>Gateway</h3></td>
  </tr>
  <?php do { ?>
    <tr>
      <td><h5><a href="verwaltung/computer_view.php?wert=<?php echo $row_computer['computer_id'];?>"><?php echo $row_computer['computer_name']; ?></a></h5></td>
      <td><h5><a href="verwaltung/os_hersteller_view.php?wert=<?php echo $row_computer['os_hersteller_id'];?>"><?php echo $row_computer['os_hersteller_name']; ?></a> <?php echo $row_computer['os_name']; ?></h5></td>
      <td><h5><a href="http://<?php echo $row_computer['computer_ip']; ?>" target="_blank"><?php echo $row_computer['computer_ip']; ?></a></h5></td>
      <td><h5><?php echo $row_computer['computer_subnet']; ?></h5></td>
      <td><h5><?php echo $row_computer['computer_gateway']; ?></h5></td>
    </tr>
    <?php } while ($row_computer mysql_fetch_assoc($computer)); ?>
</table>
<br>
<table width="100%" border="0">
  <tr>
    <td><h3>Ger&auml;tname</h3></td>
    <td><h3>Typ</h3></td>
    <td><h3>Hersteller</h3></td>
    <td><h3>IP</h3></td>
    <td><h3>Subnet</h3></td>
  </tr>
  <?php do { ?>
  <tr>
    <td><h5><?php echo $row_device['device_name']; ?></h5></td>
    <td><h5><?php echo $row_device['devicetyp_name']; ?></h5></td>
    <td><h5><a href="verwaltung/device_hersteller_view.php?wert=<?php echo $row_device['device_hersteller_id'];?>"><?php echo $row_device['device_hersteller_name']; ?></a></h5></td>
    <td><h5><?php echo $row_device['device_ip']; ?></h5></td>
    <td><h5><?php echo $row_device['device_subnet']; ?></h5></td>
    </tr>
  <?php } while ($row_computer mysql_fetch_assoc($computer)); ?>
</table>
<br>
<br>
<?php echo $spec?>
</body>
</html>
<?php
mysql_free_result
($computer);

mysql_free_result($device);

mysql_free_result($raum);
?>

Ich danke für das Verständniss und jede entgegengebracht Hilfe!

CPCoder 11.10.2011 11:00:10

AW: MySQL Fehler: Check the ... at line 1
 
Hallo Maggi,

eine Bitte vorweg: Bitte PHP-Code auch innerhalb der PHP-BBCode-Tags posten, damit man auch das entsprechende Syntaxhilighting hier sieht :)

Zu deinem Fehler:
Deine Räume werden ja innerhalb dieses Dropdowns aufgelistet:

Code:

<select name="select" id="select">
    [...]
</select>

Du wertest aber per POST folgendes aus:

PHP-Code:

$spec $_POST['raum_id']; 

Fällt dir etwas auf?

Richtig müsste deine Abfrage so lauten:

PHP-Code:

$spec $_POST['select']; 

Desweiteren solltest du Werte, welche per POST oder GET übermittelt werden niemals ungefiltert in ein SQL-Query übernehmen!
Hierfür bietet sich die Funktion mysql_real_escape_string() an.

Bsp.:
PHP-Code:

$query_computer =
                
"SELECT * ".
                
"FROM computer ".
                
"INNER JOIN os ON computer.os_id=os.os_id ".
                
"INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id ".
                
"INNER JOIN raum ON computer.raum_id=raum.raum_id ".
                
"WHERE raum.raum_id='".mysql_real_escape_string($spec)."'"

Auch dürfen zwischen dem "="-Zeichen und den Spaltennamen/Werten, welche geprüft werden sollen, keine Leerzeichen stehen!

vt1816 11.10.2011 11:03:38

AW: MySQL Fehler: Check the ... at line 1
 
Zitat:

Zitat von Maggi (Beitrag 142183)
Guten Morgen,

um direkt eine Probleme am Anfang zu lösen:
- ich bin MySQL und PHP-Anfänger

Hallo und willkommen hier im Forum.



PHP-Code:

$query_device "SELECT * FROM device 
                          INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id 
                          INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id 
                          ORDER BY device.device_ip  
                          WHERE raum.raum_id = $spec"


ORDER BY kommt nach WHERE.
WHERE hat keinen Bezug in SELECT / INNER JOIN

Maggi 11.10.2011 11:26:14

AW: MySQL Fehler: Check the ... at line 1
 
Ich danke erstmal für die Schnelle Hilfe!

Meine Abfrage gestalltet sich nun wie folgt:

PHP-Code:

<?php require_once('Connections/verwaltung.php'); ?>
<?php
$spec 
$_POST['select'];

mysql_select_db($database_verwaltung$verwaltung);
$query_computer =  "SELECT * ".
                
"FROM computer ".
                
"INNER JOIN os ON computer.os_id=os.os_id ".
                
"INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id ".
                
"INNER JOIN raum ON computer.raum_id=raum.raum_id ".
                
"WHERE raum.raum_id='".mysql_real_escape_string($spec)."'";  
$row_computer mysql_fetch_assoc($computer);
$totalRows_computer mysql_num_rows($computer);

mysql_select_db($database_verwaltung$verwaltung);
$query_device "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id WHERE raum.raum_id = '".mysql_real_escape_string($spec)."' ORDER BY device.device_ip";
$device mysql_query($query_device$verwaltung) or die(mysql_error());
$row_device mysql_fetch_assoc($device);
$totalRows_device mysql_num_rows($device);

mysql_select_db($database_verwaltung$verwaltung);
$query_raum "SELECT * FROM raum ORDER BY raum.raum_name";
$raum mysql_query($query_raum$verwaltung) or die(mysql_error());
$row_raum mysql_fetch_assoc($raum);
$totalRows_raum mysql_num_rows($raum);
?>

Da hustet er mir nun folgende Meldung aus wenn ich die Seite abrufe:

Code:

Unknown column 'raum.raum_id' in 'where clause'
Wenn ich das so regel:

PHP-Code:

<?php require_once('Connections/verwaltung.php'); ?>
<?php
$spec 
$_POST['select'];

mysql_select_db($database_verwaltung$verwaltung);
$query_computer =  "SELECT * ".
                
"FROM computer ".
                
"INNER JOIN os ON computer.os_id=os.os_id ".
                
"INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id ".
                
"INNER JOIN raum ON computer.raum_id=raum.raum_id ".
                
"WHERE computer.raum_id=$spec";  
$row_computer mysql_fetch_assoc($computer);
$totalRows_computer mysql_num_rows($computer);

mysql_select_db($database_verwaltung$verwaltung);
$query_device "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id WHERE computer.raum_id=$spec ORDER BY device.device_ip";
$device mysql_query($query_device$verwaltung) or die(mysql_error());
$row_device mysql_fetch_assoc($device);
$totalRows_device mysql_num_rows($device);

mysql_select_db($database_verwaltung$verwaltung);
$query_raum "SELECT * FROM raum ORDER BY raum.raum_name";
$raum mysql_query($query_raum$verwaltung) or die(mysql_error());
$row_raum mysql_fetch_assoc($raum);
$totalRows_raum mysql_num_rows($raum);
?>

Kommt diese Meldung:

Code:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY device.device_ip' at line 1
Nehme ich nun in der Abfrage:

PHP-Code:

mysql_select_db($database_verwaltung$verwaltung);
$query_device "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id WHERE computer.raum_id=$spec ORDER BY device.device_ip";
$device mysql_query($query_device$verwaltung) or die(mysql_error());
$row_device mysql_fetch_assoc($device);
$totalRows_device mysql_num_rows($device); 

Das WHERE raus dann funktioniert die Seite, ich kann was wählen und unten wird via

PHP-Code:

<?php echo $spec?>

auch eben diese raum_id angezeigt aber in der Liste wo die PCs gelistet sind, wird garnix gezeigt.

PHP-Code:

<table width="100%" border="0">
  <tr>
    <td><h3>Computername</h3></td>
    <td><h3>Betriebssystem</h3></td>
    <td><h3>IP</h3></td>
    <td><h3>Subnet</h3></td>
    <td><h3>Gateway</h3></td>
  </tr>
  <?php do { ?>
    <tr>
      <td><h5><a href="verwaltung/computer_view.php?wert=<?php echo $row_computer['computer_id'];?>"><?php echo $row_computer['computer_name']; ?></a></h5></td>
      <td><h5><a href="verwaltung/os_hersteller_view.php?wert=<?php echo $row_computer['os_hersteller_id'];?>"><?php echo $row_computer['os_hersteller_name']; ?></a> <?php echo $row_computer['os_name']; ?></h5></td>
      <td><h5><a href="http://<?php echo $row_computer['computer_ip']; ?>" target="_blank"><?php echo $row_computer['computer_ip']; ?></a></h5></td>
      <td><h5><?php echo $row_computer['computer_subnet']; ?></h5></td>
      <td><h5><?php echo $row_computer['computer_gateway']; ?></h5></td>
    </tr>
    <?php } while ($row_computer mysql_fetch_assoc($computer)); ?>
</table>

Tut mir leid wenn meine Fragen wirklich eigensinnig hohl sind aber mit fehlt noch jeglicher Bezug zu den Befehlen!

Maggi 11.10.2011 11:55:40

AW: MySQL Fehler: Check the ... at line 1
 
Abfrage sieht nun wie folgt aus:

PHP-Code:

<?php require_once('Connections/verwaltung.php'); ?>
<?php

$spec 
$_POST['select'];

mysql_select_db($database_verwaltung$verwaltung);
$query_computer "SELECT * FROM computer INNER JOIN os ON computer.os_id=os.os_id INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id INNER JOIN raum ON computer.raum_id=raum.raum_id WHERE raum.raum_id=$spec";
$computer mysql_query($query_computer$verwaltung) or die(mysql_error());
$row_computer mysql_fetch_assoc($computer);
$totalRows_computer mysql_num_rows($computer);

mysql_select_db($database_verwaltung$verwaltung);
$query_device "SELECT * FROM device INNER JOIN devicetyp ON device.devicetyp_id = devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id = device_hersteller.device_hersteller_id INNER JOIN raum ON device.raum_id = raum.raum_id WHERE raum.raum_id=$spec ORDER BY device.device_ip";
$device mysql_query($query_device$verwaltung) or die(mysql_error());
$row_device mysql_fetch_assoc($device);
$totalRows_device mysql_num_rows($device);

mysql_select_db($database_verwaltung$verwaltung);
$query_raum "SELECT * FROM raum ORDER BY raum.raum_name";
$raum mysql_query($query_raum$verwaltung) or die(mysql_error());
$row_raum mysql_fetch_assoc($raum);
$totalRows_raum mysql_num_rows($raum);

?>
<html>
<head>
<title>Info</title>
<link href="bin/format.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" method="post" action="info.php" target="_self">
  <table width="100%" border="0">
    <tr>
      <td width="25%"><h3>Raum</h3></td>
      <td width="75%"><select name="select" id="select">
        <?php
do {  
?>
        <option value="<?php echo $row_raum['raum_id']?>"<?php if (!(strcmp($row_raum['raum_id'], $row_computer['']))) {echo "selected=\"selected\"";} ?>><?php echo $row_raum['raum_name']?></option>
        <?php
} while ($row_raum mysql_fetch_assoc($raum));
  
$rows mysql_num_rows($raum);
  if(
$rows 0) {
      
mysql_data_seek($raum0);
      
$row_raum mysql_fetch_assoc($raum);
  }
?>
      </select></td>
    </tr>
    <tr>
      <td><input type="submit" name="button" id="button" value="ausw&auml;hlen"></td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
<table width="100%" border="0">
  <tr>
    <td><h3>Computername</h3></td>
    <td><h3>Betriebssystem</h3></td>
    <td><h3>IP</h3></td>
    <td><h3>Subnet</h3></td>
    <td><h3>Gateway</h3></td>
  </tr>
  <?php do { ?>
    <tr>
      <td><h5><a href="verwaltung/computer_view.php?wert=<?php echo $row_computer['computer_id'];?>"><?php echo $row_computer['computer_name']; ?></a></h5></td>
      <td><h5><a href="verwaltung/os_hersteller_view.php?wert=<?php echo $row_computer['os_hersteller_id'];?>"><?php echo $row_computer['os_hersteller_name']; ?></a> <?php echo $row_computer['os_name']; ?></h5></td>
      <td><h5><a href="http://<?php echo $row_computer['computer_ip']; ?>" target="_blank"><?php echo $row_computer['computer_ip']; ?></a></h5></td>
      <td><h5><?php echo $row_computer['computer_subnet']; ?></h5></td>
      <td><h5><?php echo $row_computer['computer_gateway']; ?></h5></td>
    </tr>
    <?php } while ($row_computer mysql_fetch_assoc($computer)); ?>
</table>
<br>
<table width="100%" border="0">
  <tr>
    <td><h3>Ger&auml;tname</h3></td>
    <td><h3>Typ</h3></td>
    <td><h3>Hersteller</h3></td>
    <td><h3>IP</h3></td>
    <td><h3>Subnet</h3></td>
  </tr>
  <?php do { ?>
  <tr>
    <td><h5><?php echo $row_device['device_name']; ?></h5></td>
    <td><h5><?php echo $row_device['devicetyp_name']; ?></h5></td>
    <td><h5><a href="verwaltung/device_hersteller_view.php?wert=<?php echo $row_device['device_hersteller_id'];?>"><?php echo $row_device['device_hersteller_name']; ?></a></h5></td>
    <td><h5><?php echo $row_device['device_ip']; ?></h5></td>
    <td><h5><?php echo $row_device['device_subnet']; ?></h5></td>
    </tr>
  <?php } while ($row_computer mysql_fetch_assoc($computer)); ?>
</table>
<br>
<br>
<?php echo $spec?>
</body>
</html>
<?php
mysql_free_result
($computer);

mysql_free_result($device);

mysql_free_result($raum);
?>

Dreamweaver mag diese nicht-Dreamweaver eigene Ordnung nicht!

Es hat funktioniert, nach einer kurzen Änderung wieder nicht mehr ... als ich den Code rauskopiert und eingefügt habe ging es auch nicht ... ich bin ratlos, wie kann das gehen?

Fehlermeldung ist folgende:

Code:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

vt1816 11.10.2011 13:09:59

AW: MySQL Fehler: Check the ... at line 1
 
Zitat:

Zitat von Maggi (Beitrag 142187)
[..]
Fehlermeldung ist folgende:

Code:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Kläre doch erst mal welche Deiner drei Abfragen den Fehler produziert.

Maggi 11.10.2011 13:41:34

AW: MySQL Fehler: Check the ... at line 1
 
Da liegt das Problem, ich kann es nicht rauskristallisieren.
Wenn ich quasi schonmal was ausgewählt habe, dann funktioniert alles wunderbar, also die WHERE Befehle löschen, speichern, das Dokument aufrufen, Raum auswählen, button anklicken ... nun wieder die WHERE Befehle eintragen, speichern, Raum auswählen, FUNKTIONIERT ... nur wenn ich jetzt das Dokument schließe und neu öffne bekomme ich genau diese Fehlermeldung erneut ...

vt1816 11.10.2011 14:14:30

AW: MySQL Fehler: Check the ... at line 1
 
Kann ich nicht nachvollziehen - wie kann sich eine bereits gespeicherte und funktionierende Datei ändern, nur wenn Du sie schließt?

Da muss doch noch etwas anderes passieren!?

CPCoder 11.10.2011 14:45:05

AW: MySQL Fehler: Check the ... at line 1
 
Lass dir mal deine SQL-Querys ausgeben.

Bsp.:

PHP-Code:

echo 'Query 1: '.$query_computer.'<br>';
echo 
'Query 2: '.$query_device.'<br>';
echo 
'Query 3: '.$query_raum.'<br>'


Maggi 12.10.2011 10:45:31

AW: MySQL Fehler: Check the ... at line 1
 
Die Abfrage und alles funktioniert ja aber sobald meine Variable $spec leer ist bekomme ich eben besagt Fehlermeldung.
Wenn ich die WHERE Befehle einfach alle entferne dann gehts, nur er filtert nix ...

die Querys sehen wie folgt aus:

PHP-Code:

Query 1SELECT FROM computer INNER JOIN os ON computer.os_id=os.os_id INNER JOIN os_hersteller ON os.os_hersteller_id=os_hersteller.os_hersteller_id INNER JOIN raum ON computer.raum_id raum.raum_id INNER JOIN dose ON computer.dose_id dose.dose_id WHERE raum.raum_id=1 ORDER BY computer.computer_ip

Query 2
SELECT FROM device INNER JOIN devicetyp ON device.devicetyp_id devicetyp.devicetyp_id INNER JOIN device_hersteller ON device.device_hersteller_id device_hersteller.device_hersteller_id INNER JOIN raum ON device.raum_id raum.raum_id INNER JOIN dose ON device.dose_id dose.dose_id WHERE raum.raum_id=1 ORDER BY device.device_ip

Query 3
SELECT FROM raum ORDER BY raum.raum_name 



Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.