Zuerst mischen Sie die mysql APIs an einem Punkt, den Sie verwenden mysqli_*
an einem bestimmten Punkt mit mysql_*
Sie mischen nicht. Und mysql_*
Funktionen werden abgeschrieben sie nicht mehr von späteren Versionen von PHP unterstützt. verwende besser mysqli oder pdo. Diese mysql_real_escape_string()
oder mysqlo_real_escape_string()
ist nicht sicher genug, um Sie gegen SQL-Injektionen zu verhindern. Lösung ist einfach besser beginnen mit mysqli prepared Anweisungen oder PDO prepared Anweisungen.
ein anderer Fehler: <input type="text" name="name">
<input type="text" name="name">
diese zwei Eingabefelder haben das gleiche Namensattribut php liest nur eins. und Sie werden einen undefinierten Index hier $misure = $_POST['misure'];
Sie müssen die Fehlerberichterstattung aktivieren, während Sie noch in der Entwicklung, so können Sie Ihre Fehler und Hinweise finden Sie unter:
fügen Sie diese am Anfang jeder PHP-Seite: ini_set('display_errors', 1); error_reporting(E_ALL);
auch date
Datum ist ein reserviertes Wort für mysql, damit Sie besser etwas anderes für Ihre Spaltennamen verwenden, oder fügen Sie Schrägstriche date
Oh und Ihr Code nie hier ausführen:
if (isset($_POST['submit']))
{
// get form data, making sure it is valid
$name = mysql_real_escape_string(htmlspecialchars($_POST['name']));
$author = mysql_real_escape_string(htmlspecialchars($_POST['author']));
$description = mysql_real_escape_string(htmlspecialchars($_POST['description']));
$misure = mysql_real_escape_string(htmlspecialchars($_POST['misure']));
$date = mysql_real_escape_string(htmlspecialchars($_POST['date']));
$status = mysql_real_escape_string(htmlspecialchars($_POST['status']));
}
Warum ist das? weil Sie keinen POST
Wert mit dem Attributnamen submit
haben. <input type="submit">
sehen? Ihr Beitrag hat kein Namensattribut. deshalb.Das bedeutet,
alles:
VALUES ('$name', '$author', '$description', '$misure', '$date', '$status')";
Dies sind alle nicht definierten Variablen. Ich bin überrascht, warum Ihr Server Ihnen nicht mitteilt, dass mit dieser Fehlerberichterstattung alle diese erhalten werden.
Dies ist, was u müssen, dass lösen tun:
Ihre HTML-Seite.
<form action="uploadall.php" method="post">
Name: <input type="text" name="name"><br>
Autore: <input type="text" name="author"><br>
Descrizione: <textarea id="editordescription" name="description" cols="45" rows="15">
</textarea>
<script>
CKEDITOR.replace('editordescription');
</script>
<br>Misure: <input type="text" name="misure"><br>
Data: <input type="text" name="date"><br>
<input type="hidden" name="status" value="Disattivo" size="20">
<input type="submit" name="submit">
</form>
uploadall.php
<?php
// check if the form has been submitted. If it has, start to process the form and save it to the database
if (isset($_POST['submit'])) {
$servername = "xxxxxxx";
$username = "xxxxxxx";
$password = "xxxxxxx";
$dbname = "xxxxxxxxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//check your inputs are set and validate,filter and sanitize
$name = $_POST['name'];
$author = $_POST['author'];
$description = $_POST['description'];
$misure = $_POST['misure'];
$date = $_POST['date'];
$status = $_POST['status'];
//prepare and bind
$sql = $conn->prepare("INSERT INTO exposition (name, author, description, misure, date, status)
VALUES (?,?,?,?,?,?)");
$sql->bind_param("ssssss", $name, $author, $description, $misure, $date);
if ($sql->execute()) {
echo "New record created successfully";
} else {
//you have an error
}
$conn->close();
}
?>
Das ist alles viel Glück ist.
Update:
ich Fehler korrigiert hast du mir gesagt, und ich bin jetzt mit PDO, aber es noch nicht
Ich las nicht funktioniert, dass aus Ihren Kommentaren oben, aber Sie Sie sagen uns nicht, was die Fehler sind, aber ich glaube, sie sind diejenigen, die ich oben hervorgehoben habe.
mit PDO dies ist, wie u Ihr Ziel erreichen wird:
<?php
//connection
$servername = 'XXXXXXXXXXXXX';
$dbname = 'XXXXXXXXXXXXX';
$username = 'XXXXXXXXXXXXXX';
$password = 'XXXXXXXXX';
$charset = 'utf8';
$dsn = "mysql:host=$servername;dbname=$dbname;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$dbh = new PDO($dsn, $username, $password, $opt);
// check if the form has been submitted. If it has, start to process the form and save it to the database
if (isset($_POST['submit'])) {
//check your inputs are set and validate,filter and sanitize
$name = $_POST['name'];
$author = $_POST['author'];
$description = $_POST['description'];
$misure = $_POST['misure'];
$date = $_POST['date'];
$status = $_POST['status'];
//prepare and bind
$stmt = $dbh->prepare("INSERT INTO exposition (name, author, description, misure, date, status)VALUES (?,?,?,?,?,?)");
if ($stmt->execute(array($name,$author,$description,$misure,$date,$status))) {
echo "New Record inserted success";
}
}
?>
Mögliche Duplikat [? Kann ich mischen MySQL APIs in PHP] (http://stackoverflow.com/questions/17498216/can-i -mix-mysql-apis-in-php) –
Kein Fehler erscheint? Und bitte hören Sie auf, mysql_ * '-Funktionen zu verwenden, sie sind bereits depechiert. Verwenden Sie stattdessen [PDO] (http://php.net/manual/en/book.pdo.php} oder [MySQLi] (http://php.net/manual/en/book.mysqli.php) – Swellar
'mysql_real_escape_string 'und Ihre Verbindung ist' mysqli' –