Die Aktualisierung der Daten in der MySql-Datenbank mit PHP-Formular
Ich hoffe es gibt jemanden der mir helfen kann. Ich bin versucht, zu aktualisieren, Daten in einer MySql-Datenbank mit einem PHP-Formular mit einer textarea.
Solange ich ein update der Datenbank mit einer zufälligen Zeichenfolge, die definiert ist, an den Anfang der Seite, es funktioniert gut. Aber wenn ich versuche zu aktualisieren, wird die Datenbank mit dem $_POST['text'] erhalte ich aus dem Formular, wird der Wert in der Datenbank nicht aktualisiert.
Ich habe wirklich keine Ahnung, was das problem ist, also ich hoffe es gibt jemanden der mir helfen kann um diese Arbeit zu machen. Bitte lassen Sie mich wissen, wenn meine Frage nicht klar genug.
test.php
<html>
<head>
<script type="text/javascript" src="./js/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: "textarea",
plugins : 'advlist autolink autoresize autosave link image lists charmap media paste preview spellchecker',
image_advtab: true
});
</script>
</head>
<body>
<?php
$con=mysqli_connect("example.com","test","abc123","my_db");
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT content FROM page_content WHERE page = 'Zangpedagoog'");
while($row = mysqli_fetch_array($result))
{
$text=$row['content'] ;
}
?>
<form method="post" action="./send.php">
<textarea name="text" width="100%">
<?php echo $text ?>
</textarea>
<input id="submit" name="submit" type="submit" value="Send"></form></body></html>
send.php
<?php
$update = $_POST['text'];
echo $update;
$random = '123456';
echo $random;
$con=mysql_connect("example.com","test","abc123","my_db");
//Check connection
if (!$con)
{
echo "Failed to connect to MySQL: " . mysql_connect_error();
}
mysql_query("UPDATE page_content SET content=$update WHERE page='Zangpedagoog'",$con);
mysql_close($con);
?>
- Zuerst bist du mit
mysqli_query
dann bist du mitmysql_query
versuchen zu kleben mit "eins",mysqli_
ist besser und für so viele Gründe. - mysql_* ist veraltet, benutze mysqli oder pdo statt. Sie müssen auf jeden Fall auf prepared statements auch, dein code ist weit offen für SQL-injection-Angriffe
- auch dieses verwenden: php.net/manual/en/function.htmlspecialchars.php
- Versuchen Sie, ein semi-colon in deine textarea echo ' ed PHP, wie in
<?php echo $text; ?>
oder<?php echo $_POST['$text']; ?>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es ist hier:
Sind Sie setzen $update direkt in den string.
Das ist sehr gefährlich und dumm, aber das ist nicht, was Sie für kamen.
Die Sache, die wirklich zu einem Fehler führt, denke ich, ist die fehlende "s etwa $update.
Jetzt wird der Wert erhalten, ist direkt in der Abfrage, anstatt als string, ich denke, was Sie wollen.
Beachten Sie, dass dies sehr offen für SQL-injections!
Fixed-code: