Verbindung fehlgeschlagen:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第4行的“加入Strek on pk_fk_Strecke = pk_Strecke”附近使用正确的语法
到目前为止,这是我的php文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> PHP F1 - Datenbank</title>
<style>
button {
margin:5px;
margin-left:-0px;
}
.insert {
position:relative;
margin:0px;
margin-bottom:5px;
margin-top:-25px;
}
</style>
</head>
<body>
<h2> Insert Dokument für deine Datensätze ! </h2>
<form action="F1_PHP.php" method="post">
<input type="text" name="jahr" placeholder="2015-11-21"> <br><br>
<input type="text" name="sieger" placeholder="Sieger"> <br><br>
<input type="text" name="schnellster" placeholder="1:32:301"> <br><br>
<input type="text" name="strecke" placeholder="Strecke"><br><br>
<input type="submit" name="formdaten" class="insert" value="Insert"> <br>
</form>
<?php
//phpinfo();
/***
* This document contains a demonstration for accessing a
* MySQL Demo Database via PDO and OOP
* we connect to MySQL but its easy to exchange the underlying
* database (e.g. to Oracle) without having to alter the PHP code.
*
* Database: MySQL on localhost (XAMPP)
* Codebase: PHP OOP
*/
// We use PDO to do a database connection and require the functionality
try {
$server = 'mysql:dbname=f1;host=localhost';
$user = 'root';
$password = '';
$options = array
(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$pdo = new PDO($server, $user, $password, $options);
// because we have default errormode_silent we change to ERRMODE_EXCEPTION
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST["formdaten"])) {
$jahr = $_POST["jahr"];
$sieger = $_POST["sieger"];
$schnellster = $_POST["schnellster"];
$strecke = $_POST["strecke"];
$eintrag = $pdo->prepare("INSERT INTO Rennen
(pk_jahr, sieger, SchnellsteRunde, pk_fk_strecke)
VALUES
(?, ?, ?, ?) join Strecke on pk_fk_Strecke = pk_Strecke");
$eintrag ->execute(array($jahr,$sieger, $schnellster, $strecke));
if($eintrag == true) {
echo "Eintrag war erfolgreich";
} else {
echo "Fehler";
}
}
}
catch (PDOException $error) {
echo 'Verbindung fehlgeschlagen: ' . $error->getMessage();
//print_r($error);
}
?>
</body>
<table border="1">
<tr>
<th> </th>
<th> Jahr </th>
<th> Sieger </th>
<th> Schnellste Runde </th>
<th> Strecke </th>
</tr>
<?php
try {
$query= 'SELECT pk_Jahr,Sieger,SchnellsteRunde,pk_fk_Strecke
FROM Rennen join Strecke on pk_fk_Strecke = pk_Strecke
order by pk_Jahr';
$stmt = $pdo -> query($query);
while( $row = $stmt->fetch(PDO::FETCH_ASSOC) )
{
echo '<tr>';
echo ' <td>'."<input type='radio' name='markiert'>".'</td>';
echo ' <td>'. $row["pk_Jahr"].'</td>';
echo ' <td>'. $row["Sieger"]. '</td>';
echo ' <td>'. $row["SchnellsteRunde"]. '</td>';
echo ' <td>'. $row["pk_fk_Strecke"]. '</td>';
echo '</tr>';
}
echo '</table>';
}
catch (PDOException $error) {
echo 'Fehler beim Lesen der Daten ' . $error->getMessage();
}
?>
<input type="submit" name="delete" value="Delete">
<input type="submit" name="update" value="Update">
</html>
我在一个网站上看到它会像这样工作,但在我的情况下,它会抛出一个例外,我不知道为什么。
我的数据库看起来像这样
create table Sponsoren(
pk_Firma varchar(100) primary key,
Ausgaben decimal(10,2),
Firmensitz varchar(100),
Kontakt varchar(100)
);
create table Strecke(
pk_Strecke varchar(100) primary key,
Land varchar(100),
Stadt varchar(100),
Laenge varchar(30)
);
create table Rennen(
pk_Jahr date,
pk_fk_Strecke varchar(100),
SchnellsteRunde varchar(100),
Sieger varchar(100),
primary key(pk_Jahr,pk_fk_Strecke),
constraint RennenStrecke foreign key(pk_fk_Strecke) references Strecke(pk_Strecke)
);
create table Schmierstoffe (
pk_SSName varchar(100) primary key,
ersterEinsatz date,
letzterEinsatz date,
Rennteilnahmen int,
Siege int,
Podeste int,
Punkte decimal(12,2)
);
create table Reifenhersteller (
pk_RHName varchar(100) primary key,
Luftdruck decimal(10,2),
AnzahlRennen int,
Siege int
);
create table Motorenhersteller (
pk_MHName varchar(100) primary key,
Nation varchar(100),
Motorname varchar(100),
istAktiv boolean,
letztesRennen date,
erstesRennen date
);
create table Manufaktur (
pk_MFName varchar(100) primary key,
Strasse varchar(100),
Ort varchar(100),
PLZ varchar(100),
TelNr varchar(100),
Email varchar(100),
FaxNr varchar(100)
);
create table Hersteller (
pk_HSName varchar(100) primary key,
fk_MFName varchar(100),
istAktiv boolean,
AnzahlRennen int,
letztesRennen date,
erstesRennen date,
constraint HersMF foreign key(fk_MFName) references Manufaktur(pk_MFName)
);
create table Team (
pk_Teamname varchar(100) primary key,
fk_RHName varchar(100),
fk_MHName varchar(100),
fk_HSName varchar(100),
istAktiv boolean,
erstesRennen date,
letzesRennen date,
constraint RH foreign key(fk_RHName) references Reifenhersteller(pk_RHName),
constraint MH foreign key(fk_MHName) references Motorenhersteller(pk_MHName),
constraint HS foreign key(fk_HSName) references Hersteller(pk_HSName)
);
create table Fahrer(
pk_FahrerNr int primary key,
Nation varchar(100),
Vorname varchar(100),
Nachname varchar(100),
fk_Teamname varchar(100),
GebDatum date,
Einsätze int,
Siege int,
constraint Team foreign key(fk_Teamname) references Team(pk_Teamname)
);
create table Rekorde (
pk_Beschreibung varchar(100),
fk_FahrerNr int,
Jahr date,
fk_Strecke varchar(100),
constraint ST foreign key(fk_Strecke) references Strecke(pk_Strecke)
);
create table Rennen_hat_Fahrer (
pk_Jahr date,
pk_fk_FahrerNr int,
pk_fk_Strecke varchar(100),
Endplatzierung int,
Qualifingplatzierung int,
Qualizeit varchar(100),
Strafversetzung varchar(10),
primary key(pk_Jahr, pk_fk_FahrerNr,pk_fk_Strecke),
constraint RF foreign key(pk_fk_FahrerNr) references Fahrer(pk_FahrerNr),
constraint RS foreign key(pk_fk_Strecke) references Strecke(pk_Strecke)
);
create table Rennen_hat_Sponsoren (
pk_fk_Jahr date,
pk_fk_Firma varchar(100),
primary key(pk_fk_Jahr,pk_fk_Firma),
constraint RSJ foreign key(pk_fk_Jahr) references Rennen(pk_Jahr),
constraint RSF foreign key(pk_fk_Firma) references Sponsoren(pk_Firma)
);
create table Manufaktur_hat_Schmierstoffe (
pk_fk_MFName varchar(100),
pk_fk_SSName varchar(100),
primary key(pk_fk_MFName, pk_fk_SSName),
constraint MSM foreign key(pk_fk_MFName) references Manufaktur(pk_MFName),
constraint MSS foreign key(pk_fk_SSName) references Schmierstoffe(pk_SSName)
);