Speichern Eingabe vom Benutzer in die Datenbank ein
Ich bin ziemlich neu in PHP und ich bin versucht zu retten, Eingaben von einem Benutzer in einer mysql-Datenbank. Ich folgte ein tutorial online, wie es zu tun, aber jedes mal, wenn ich geben Sie die Benutzer-info, die Webseite sagt mir, dass es fehlgeschlagen ist. Das einzige, was ich denken kann, ist der host-name(ich kopierte und klebte es von phpadmin).Bitte lassen Sie mich wissen, wenn es etwas falsch.
contact.html
<section id="mid_section">
<div id="boxes">
<h1>
Leave your information here for a quick reponse:
</h1>
<br/>
<form id="myform" action="userinfo.php" method="post">
Name:<input type="text" value="name">
Email:<input type="email" value="email">
Phone:<input type= "tel" value="phone(opt)">
<button id="sub">Submit</button>
</form>
db.php
<?php
$conn = mysql_connect('custsql.eigbox.net','username','password');
$db= mysql_select_db('visitors');
?>
userinfo.php
<?php
include_once('db.php');
$name =$_POST['name'];
$email =$_POST['email'];
$phone =$_POST['phone'];
if(mysql_query("INSERT INTO users (name,email,phone) VALUES ('$name','$email','$phone')"))
echo"successfully inserted";
else
echo "failed";
?>
myscript.js
$("#sub").click(function(){
$.post($("#myform").attr("action"), $("#myform:input").serializeArray(), function(info){$("#result").html(info);});
});
$("#myform").submit(function(){
return false;
});
- Dein code ist unglaublich leicht zu hacken. Erfahren Sie, wie zu bereinigen, Variablen und stoppen mit
mysql_*
wie es ist veraltet. Verwendenmysqli_*
oderPDO
. Gibt es eine bestimmte Fehlermeldung kann man Staat? Wir können nicht magisch Fehler zu finden, es sei denn, es ist doch offensichtlich. - Haben Sie eine eigene mysql-Datenbank?
- ja ich habe eine eigene sql-Datenbank @bfavaretto
- kannst du bitte spezifischer werden? Ich bin neu in PHP
- Wie Sie wissen, funktioniert es nicht? Ist die Seite weiß? Sagt er syntax Fehler in Zeile 3? Tut, ist geben Sie einen mysql-Fehler??? Jedes kleine detail hilft
- Also, wenn du die db auf dem lokalen Rechner "localhost" als hot-Namen und den Benutzernamen und das Kennwort ein, das Sie definiert, wenn Sie installiert den mysql-server.
- Ich sah ein paar Personen mit mysqli_* warum ist das besser?.Auch die Fehlermeldung, die kommt ist "gescheitert", die unter userinfo.php
- die Datenbank ist online
- Okay, aber wenn das php ist, läuft auf dem gleichen Rechner wie die db, localhost sollte auch funktionieren.
- ok ich werde es ändern auf "localhost" und Sie wissen lassen,
- Um Ihre Frage zu beantworten, um RUJordan:
VALUES ('$name','$email','$phone')
ist eine Sicherheitslücke, und der mysqli-und pdo bietet einen sichereren Optionen. Siehe bobby-tables.com - Ich habe es auf localhost,aber trotzdem warf mich der"echo "failed";" Nachricht von userinfo.php
- Entfernen Sie Ihre if-Anweisung, und versuchen Sie, diese:
mysql_query("INSERT INTO users (name,email,phone) VALUES ('$name','$email','$phone')") OR die(mysql_error())
. Wenn die Abfrage fehlschlägt, sollte es Euch genau sagen was das problem ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie vielleicht ziemlich ein Neuling in php, auf der einen Seite ist es toll, tutorials,
allerdings macht eine richtige Quelle sein könnte, eine häufige katastrophale problem.
Wenn Sie Funktionen verwenden, wie
mysql_select_db
undmysql_query
es basiaclly bedeutet, dass Sie verwenden eine veraltete mysql-Stil.Wenn man auf der offiziellen php-Dokumentation und Suche für mysql-Methode, es wird Ihnen sagen, über seine Missbilligung.
Problem hier, obwohl, ist nicht ein Weg, die Interaktion mit der Datenbank, Ihren Stil der Codierung noch funktioniert und immer noch viele Menschen tun es einfach so.
Ich nur sagen, dass Sie als ein Neuling, dass anstelle der
mysql_
Funktionen, die Menschen neigen dazu, zu Gunsten oder mysqli und PDO. Betrachten Sie Sie als Ihre zukünftige Freunde.Was ist dein problem, ich glaube, alles ist okay, außer Ihren Funktionen mysql_query sieht seltsam aus.
Probieren Sie folgenden code anstelle der Abfrage-Anweisung
oder aus Gründen der Sicherheit sogar besser
Wenn ist es nicht der Fall und Sie bekommen trotzdem ein "Fail" error-Anweisung, die Sie tun müssen, ist ein wenig debugging und die Menschen hier in der Lage sein, um Ihnen zu helfen
So, müssen Sie folgenden anstelle von, was Sie jetzt haben
Lassen Sie uns sehen, was passiert,
mysqld
gestartet werden, fürmysql.sock
erstellt werden und auf Sie zugegriffen wird. Sie benötigen, um zu überprüfen, ob er ausgeführt wird. Ich glaube, Sie brauchen, um auf diese Frage stackoverflow.com/questions/11990708/... oder ähnlich. Viel Glück!Auf den ersten, mit Namen auf alle Attribute des Formulars. So, contact.html wird
Verwenden mysqli_* statt mysql_* wie ist es veraltet. Sie können auch PDO. Mehr auf mysqli_*
Filtern der Daten vor dem einfügen in die Datenbank. So, userinfo.php Aussehen wird