PHP Script

P

phpScriptFalsch

Gast
Hey, ich weiß das hier ist ein Java Forum aber ich wollte mich nicht in irgendeinem PHP Forum registrieren nur für diese eine Frage und da hier ja in der Regel schnell geantwortet wird, hoffe ich ihr könnt mir hier weiterhelfen.

Habe das folgende Skript:
PHP:
<?php
$con = mysql_connect("host","user","pw");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

 $name = $_GET['name'];
 print("$name");


mysql_select_db("sql_db", $con);
$sql = "CREATE TABLE $name (
  'routeID' int(11) NOT NULL AUTO_INCREMENT,
  'Longitude' float NOT NULL,
  'Latitude' float NOT NULL,
  'Altitude' float NOT NULL,
  PRIMARY KEY ('routeID')
) ENGINE=MyISAM DEFAULT CHARSET=utf8";

mysql_query($sql,$con);

mysql_close($con);
?>

Könnt ihr mir sagen warum die Tabelle nicht in meiner DB erzeugt wird ? Bzw. wie ich mein phpScript ändern muss damit es klappt ?

Danke !
 

Tobse

Top Contributor
Ohjeohje, MYSQL-INJECTIOn GEFAHR! in Zeile 13 (Btw das ist auchnoch unschöner Programmierstil)
Und es kann gut sein, dass die Tabelle bereits besteht. Ansonsten poste einfach mal den Fehler.
 
P

phpScriptFehler

Gast
Die Verbindung klappt glaube ich. Wenn ich das folgende script nehme funktioniert es:
Code:
CREATE TABLE $name (
<?php
$con = mysql_connect("host","user","pw");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

 $name = $_GET['name'];
 print("$name");


mysql_select_db("sql_db", $con);
$sql = "CREATE TABLE $name 
(
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";

mysql_query($sql,$con);

mysql_close($con);
?>

Das heißt es muss wohl irgendwie an meinem SQL Statement liegen, weil das das einzige ist was ich verändert habe.
 
P

PhpScriptFalsch

Gast
Fehlermeldung:
Code:
1064: 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 ''routeID' int(11) NOT NULL AUTO_INCREMENT, 'Longitude' float NOT NULL, 'Lati' at line 2
 
G

Gast2

Gast
Joa, da haste den Fehler. Du nutzt die falschen hochkommata. Die kannst du übrigens auch einfach weglassen.
 
P

phpScriptFalsch

Gast
Hm, habe meinen Code nun etwas ausgebaut, bekomme nun aber folgenden Error:

Code:
43434230: 1064: 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 7 0: 0:

Mein Code bis jetzt:
PHP:
<?php

$con = mysql_connect("host","user","pw"); 
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
 }

//SQL Injection verhindern

$id = mysql_real_escape_string($_GET['id']);
print("$id");

$latitude = mysql_real_escape_string($_GET['latitude']);
print("$latitude");

$longitude = mysql_real_escape_string($_GET['longitude']);
print("$longitude");

$altitude = mysql_real_escape_string($_GET['altitude']);
print("$altitude");



mysql_select_db("sql_db", $con);
$sql = "CREATE TABLE IF NOT EXISTS Trackpoint (
  routeID int,
  Longitude float NOT NULL,
  Latitude float NOT NULL,
  Altitude float NOT NULL,
  DateTime DATETIME,
)";

$sqlTwo = "CREATE TABLE IF NOT EXISTS Track (
  ID int,
  DateTime DATETIME,
  PRIMARY KEY (ID)
)";



mysql_query($sqlTwo,$con);
echo mysql_errno($con) . ": " . mysql_error($con) . "\n";

mysql_query($sql,$con);
echo mysql_errno($con) . ": " . mysql_error($con) . "\n";


$idQuery = "SELECT * FROM Track WHERE ID = $id";
$result = mysql_query($idQuery) or die ("MySQL-Fehler: " . mysql_error());  
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
print("Id besteht bereits");
}

else {
$insertSQLTwo = "INSERT INTO Track(ID, DateTime)
VALUES ($id,NOW())";
mysql_query($insertSQLTwo,$con);
echo mysql_errno($con) . ": " . mysql_error($con) . "\n";

}

if(isset($latitude) && isset($longitude) && isset($altitude) && isset($id)) {
$insertSQL = "INSERT INTO Trackpoint(routeID, Longitude, Latitude, Altitude, DateTime)
VALUES ($id, $longitude,$latitude,$altitude,NOW())";
mysql_query($insertSQL,$con);
echo mysql_errno($con) . ": " . mysql_error($con) . "\n";

}

mysql_close($con);
?>

die 43434230 sind id = 4, longitude = 34, latitude = 34 23 = altitude... danach kommt der Error, angeblich in Zeile 7 ?! was sollte denn da falsch sein...

Danke für eure Hilfe !
 
G

Gast2

Gast
Das einzige Statement mit 7 Zeilen ist dein create Statement. Was könnte bei der ) Klammer wohl falsch sein... ?
 
P

phpScriptFalsch

Gast
Danke, das Komma muss weg ;-)
Dachte das bezieht sich auf Zeile 7 und nicht das Statement mit 7 Zeilen.
 

chalkbag

Bekanntes Mitglied
Kleiner Schlaumaiertipp, du kannst die SQL - Statements auch direkt im Tool deiner MySQL ausführen, haben eigentlich alle gängigen Datenbanken sogar eine Weboberfläche hierfür. Oder eben extra Tools wie SQL Developer verwenden.
So solltest du deine SQL Fehler schneller finden und musst auch nicht überlegen, ob dein Script eventuell falsch ist.
 

cmrudolph

Gesperrter Benutzer
Bei MySQL kann ich MySQL Workbench empfehlen. Dass die Datenbanken eine eigene Weboberfläche mitbringen wäre mir aber neu. Meinst du vielleicht die gängigen Administrationsoberflächen phpMyAdmin oder phpPgAdmin? Oder bezieht sich das eher auf kommerzielle Datenbanksysteme?
 

chalkbag

Bekanntes Mitglied
Oracle hat z.B. eine schöne Oberfläche in der XE Edition, hier kann man sich sogar die Anfragen zusammen klicken. Kannst ja mal die Express Edition installieren und dann ist es glaub ich standardmäßig localhost:8080 oder localhost:8000. Ich nutze momentan nur noch SQL Developer, weil ich hier leicht unterschiedliche Datenbanken verwalten kann.
 

Ähnliche Java Themen

Neue Themen


Oben