PHP - MySql Datenbank Problem

PC, Telefon etc.

PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 09:34

Hi @all ich habe ein Problem mit meinem PHP Formular. Ich möchte mit diesem Formular einträge in einer Datenbank vornehmen.

Der code des Formulars meiner blog.php
Code: Alles auswählen

<html>
<head>
<?php include 'conn.inc';     ?>

<?php

  if ((isset($_POST["blog_insert"])) && ($_POST["blog_insert"] == "form1"))
   {


      $num = mysql_affected_rows();

      $sqlab = sprintf("INSERT INTO bloggs (vardatum, varorteintragung, varueberschrift, ltexttext) VALUES (%s, %s,%s,%s)",
                       GetSQLValueString($_POST['varDatum'], "varchar"),
                       GetSQLValueString($_POST['varorteintragung'], "varchar"),
                       GetSQLValueString($_POST['varueber'], "varchar"),
                       GetSQLValueString($_POST['vartext'], "longtext"));

        mysql_db_query('bbmonex_gernand24', $sqlab) or die(mysql_error());


      if ($num = 0)
       echo "Es ist ein Fehler aufgetreten,es wurde kein Datensatz hinzugefügt";
       else echo "Es wurde 1 Datensatz hinzugefügt";


   }
    mysql_close($db);
 ?>

</head>

<body>
Geben Sie einen vollständigen Datensatz ein und senden Sie das
Formular ab:
<table border="1">
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<tr>
    <td>Datum</td><td> <input name="vardatum" value=".2005"></td>
  <p>
  </tr>

  <tr>
    <td>Ort</td> <td><input name="varorteintragung"></td>
  </tr>
  <tr><td>Überschrift</td><td ><input name="varueber"></td></tr>
<tr>
<td>Text</td>
<td><textarea cols="50" rows="10"  name="vartext"></textarea></td></tr>
<tr>
    <td><input type="submit" name="gesendet">

    </td>
    <td><input type="reset"></td>

</tr>
<input type="hidden" name="blog_insert" value="form1">
</form>
</table>


</body>
</html>


Der Code meiner conn.inc
Code: Alles auswählen
<?php
    // Dateiname: conn.php
    $db =mysql_connect("localhost","bbmonex_iuser","MyPassword");


function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}


$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

?>


Wenn ich das Formular absende bekomme ich folgende Fehlermeldung:
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 ' Griesheim,A,errer)' at line 1


Ihr könnt es auch gerne selbst unter
www.gernand24.de/blog.php testen.

Das auslesen aus der Datenbank funktioniert einwandfrei:
http://gernand24.de/readblog.php

vielen Dank schonmal im voraus für eure Hilfe.
grüße MArco
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon Bimbel » 14.09.2005, 10:08

Lass dir doch mal $sqlab ausgeben..
Fordere viel von dir selbst und erwarte nichts von den Anderen. So wird dir Ärger erspart bleiben.
Schärfentiefe
Benutzeravatar
Bimbel
Administrator
 
Beiträge: 16394
Registriert: 20.04.2000, 05:45
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 10:31

ich habe die &sqlab schon an diversen Stellen im Code versucht auszugeben. Leider bekomme ich keine Anzeige. Es erscheint immer nur die oben angesprochene Fehlermeldung.

Hast du einen Vorschlag wo die Variable angezeigt werden könnte?
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon Bimbel » 14.09.2005, 10:36

Wenn du den Code mittels die() abbrichst, ist klar, daß du sonst wenig siehst..
Code: Alles auswählen
die ("Achtung! Fehler bei der Abfrage:"
                 ."<li>errorno= ".mysql_errno()
                 ."<li>error= ".mysql_error()
                 ."<li>Query= ".$sqlab
                 );
Fordere viel von dir selbst und erwarte nichts von den Anderen. So wird dir Ärger erspart bleiben.
Schärfentiefe
Benutzeravatar
Bimbel
Administrator
 
Beiträge: 16394
Registriert: 20.04.2000, 05:45
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 10:56

Ah ok Thanks,
ich habe vergessen zu erwähnen, dass ich in der Datenbank den Auto-Increment Wert ID habe.
Muss ich den irgendwie mit übergeben?!?!?
HAbe es schon versucht, es bringt aber keine Änderung.

Das Echo der $sqlab sagt folgendes:

Code: Alles auswählen
INSERT INTO bloggs (vardatum, varorteintragung, varueberschrift, ltexttext) VALUES (, Griesheim, Am Ra, mjk)



Ich habe gerade festgestellt, dass ich im varDatum einen Schreibfehler habe. Es heisst *vardatum*. Bei diesem Codeschnipsel habe ich die ID mit reingenommen. Es erscheint die selbe Ausgabe mit ohne ID...
Die Ausgabe nun lautet:
Code: Alles auswählen
INSERT INTO bloggs (id, vardatum, varorteintragung, varueberschrift, ltexttext) VALUES (.2005, Griesheim, A, gki)
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon Bimbel » 14.09.2005, 11:00

Zur Fehlerbereinigung: Wenn id den Wert auto_increment hat, solltest du diese nicht mit übergeben. Des weiteren sollten die Namen der Tabellenfelder in Backticks gesetzt werden, die Feldinhalte in Anführungszeichen, sofern es sich nicht um numerische Werte handelt..

Code: Alles auswählen
INSERT INTO `bloggs` (`vardatum`, `varorteintragung`, `varueberschrift`, `ltexttext`) VALUES ('.2005', 'Griesheim', 'A', 'gki')
Fordere viel von dir selbst und erwarte nichts von den Anderen. So wird dir Ärger erspart bleiben.
Schärfentiefe
Benutzeravatar
Bimbel
Administrator
 
Beiträge: 16394
Registriert: 20.04.2000, 05:45
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 11:16

hmm ich habe die Feldinhalte in Anführungszeichen. Leider hat sich da noch keine Änderung eingestellt. HAst du evtl. noch eine Idee?

Code: Alles auswählen
    $sqlab = sprintf("INSERT INTO `bloggs` (`vardatum`, `varorteintragung`, `varueberschrift`, `ltexttext`) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST["vardatum"], "varchar"),
                       GetSQLValueString($_POST["varorteintragung"], "varchar"),
                       GetSQLValueString($_POST["varueber"], "varchar"),
                       GetSQLValueString($_POST["vartext"], "longtext"));



Ausgabe:
INSERT INTO `bloggs` (`vardatum`, `varorteintragung`, `varueberschrift`, `ltexttext`) VALUES (.2005, Griesheim, Am Ra, öjköpio)
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon Bimbel » 14.09.2005, 11:35

Nein, die Feldinhalte sind nicht in Anführungszeichen..
Wobei ich noch nie mit sprintf() gearbeitet habe, das sollte gehen:
Code: Alles auswählen
 VALUES ('%s', '%s', '%s', '%s')
Fordere viel von dir selbst und erwarte nichts von den Anderen. So wird dir Ärger erspart bleiben.
Schärfentiefe
Benutzeravatar
Bimbel
Administrator
 
Beiträge: 16394
Registriert: 20.04.2000, 05:45
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 12:46

ah jetzt ja :-) vielen Dank für den Support. Jetzt funktioniert es einwandfrei
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Re:PHP - MySql Datenbank Problem

Beitragvon marco » 14.09.2005, 12:51

ich habe nun aber ein weiteres problem. die conn.inc steht in einem geschützten verzeichnis. ich habe sowohl die blog.php und die conn.inc da hineingeschoben. nun kann ich nicht mehr mit der blogread darauf zugreifen.

muss ich irgendetwas beachten?

der code in der blogread sieht wie folgt aus:
Code: Alles auswählen
<?php   include '/blogg/conn.inc'; ?>

Die Fehler:
Code: Alles auswählen
Warning: main(): open_basedir restriction in effect. File(/blogg/conn.inc) is not within the allowed path(s): (/home/bbmonex/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/bbmonex/public_html/readblog.php on line 4

Warning: main(/blogg/conn.inc): failed to open stream: Operation not permitted in /home/bbmonex/public_html/readblog.php on line 4

Warning: main(): open_basedir restriction in effect. File(/blogg/conn.inc) is not within the allowed path(s): (/home/bbmonex/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/bbmonex/public_html/readblog.php on line 4

Warning: main(/blogg/conn.inc): failed to open stream: Operation not permitted in /home/bbmonex/public_html/readblog.php on line 4

Warning: main(): Failed opening '/blogg/conn.inc' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/bbmonex/public_html/readblog.php on line 4
Marco Gernand 2009: Ich habe keine Vorurteile, ich verurteile jeden Menchen gleich!
Benutzeravatar
marco
schläft hier
 
Beiträge: 2851
Registriert: 11.05.2003, 00:00
Wohnort: Griesheim

Nächste

Zurück zu Technik

Wer ist online?

Mitglieder: Google [Bot]

cron
bimbel.de