SQLSTATE[HY000] [2002] Fehler
Ich bin versucht derzeit, einfügen von Daten aus einer CSV-Datei in meine mysql-Datenbank. Das Formular und alle Funktionen richtig funktionieren, weil ich habe getestet, um sicherzustellen, dass Es beim Lesen der Datei, etc. Wenn ich mich vorbereiten PDO einfügen in mysql bekomme ich keine Fehler in Chrome. Wenn ich jetzt lassen Sie es execute()
das ist, wenn ich server-Fehler in Chrome(alle browser) und ich sah in meinem error-log-Datei, die zeigte, wo die Funktion ist zu sagen:
SQLSTATE[HY000] [2002]
No connection could be made because the target machine actively refused it.
Werde ich einfügen mein code auf die Funktion, die ich gemacht habe.
Code:
function returnBack(){
header("Location:csvuploader/csvuploaderform.php?seterror=1");
exit;
}
if (isset($_POST['submit'])){
/*******************************CHECK TO MAKE SURE FORM IS PROPERLY FILLED AND GET NAME OF COLUMNS IN CSV FILE *********************************************************/
if (empty($_FILES['file'] ) )
{
returnBack();
}
if (empty($_POST['firstname'])){
echo "firstname is empty";
returnBack();
}
if (empty($_POST['lastname'])){
echo "lastname is empty";
returnBack();
}if (empty($_POST['email'])){
echo "email is empty";
returnBack();
}
if (empty($_POST['phone'])){
returnBack();
}
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file , "r");
$fileop = fgetcsv($handle,1000,",");
$fileop=array_map("strtoupper",array_map("trim",$fileop));
$firstname_index = array_search(strtoupper($_POST["firstname"]),$fileop);
if ($firstname_index===false){
returnBack();
}
$lastname_index = array_search(strtoupper($_POST['lastname']),$fileop);
if ($lastname_index===false){
returnBack();
}
$email_index = array_search(strtoupper($_POST['email']),$fileop);
if ($email_index===false){
returnBack();
}
$phone_index = array_search(strtoupper($_POST['phone']),$fileop);
if ($phone_index===false){
returnBack();
}
/***********************ASSIGN COLUMN VALUES TO ACCORDING VARIABLES AND INSERT THEM INTO CSV TABLE IN DB *************************************/
try {
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e) {
echo "I'm sorry, I'm afraid I can't do that.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
/*$fileop = fgetcsv($handle,1000,",")*/
while (($fileop=fgetcsv($handle)) !== false)
{
$fileop=array_map("trim",$fileop);
$firstname = $fileop[$firstname_index];
$lastname = $fileop[$lastname_index];
$email = $fileop[$email_index];
$phone = $fileop[$phone_index];
$insertdata = $DBH->prepare("INSERT INTO csvdata (firstname, lastname, email, phone) VALUES ('$firstname','$lastname','$email','$phone')");
//var_dump($insertdata);
$insertdata->execute();
}
}
$DBH = null;
AKTUALISIERT ------------------------------------- Heres einige Infos
PHP-info - PHP Version 5.3.10, System Windows NT W03 6.0 build 6002 (Windows Server 2008 Standard Edition Service Pack 2) i586
AKTUALISIERT ------------------------------------
Ich bin in der Lage, eine Verbindung zum MySQL-server und durchsuchen - einfügen von Daten aus anderen Funktionen, die ich gemacht habe, und Sie funktionieren alle perfekt. Es ist nur diese eine geben, wird mir ein Fehler.
AKTUALISIERT -------------------------------------------------------------------------
Figured it out Jungs, vielen Dank für Ihre Hilfe. Ich habe tatsächlich benötigt, um füllen Sie alle Spalten mit Daten für Sie zu arbeiten. Zum Beispiel hatte ich (firstname,lastname,email,Telefon) habe ich benötigt, um füllen Sie username,Passwort,status Teil. Vielen Dank für Eure Hilfe Jungs! Hoffe dies hilft wer fällt in das gleiche Loch!
- vielleicht ist Ihr Benutzername und oder Passwort falsch sind
- Nein, habe ich überprüft ;/.
- Nein, "Maschine verweigerte es" bedeutet ein firewall-Problem oder server nicht auf TCP.
- wissen Sie, wie Sie dieses Problem beheben?
- Sie brauchen, um den MySQL-server 1) ausgeführt wird, und 2) für verbindungen Empfangsbereit egal von welcher Maschine aus, die Sie verwenden, als client.
- Es funktioniert völlig in Ordnung, wenn ich eine Verbindung mit ihm herstellen und einfügen von Daten aus anderen Funktionen - Sie funktionieren alle perfekt. Ich bin mit MySQL-workbench.
- wenn du meinst, von anderen Funktionen redest du innerhalb von PHP oder redest du mit verschiedenen mysql-clients wie MySQL Workbench?
- Sorry, Php-code, der verwendet die gleiche MySQL-db
- Zusätzlich wirst du über prepared statements alle falsch!
$insertdata = $DBH->prepare("INSERT INTO csvdata (firstname, lastname, email, phone) VALUES (?,?,?,?)"); $insertdata->execute(array($firstname,$lastname,$email,$phone));
- zum Beispiel habe ich eine members-Tabelle, wo Sie es überprüfen, um zu sehen, wenn sich ein Benutzer im system registriert. Ich bin in der Lage, den Zugriff auf die Daten und legen Sie (wenn sich jemand registriert).
- könnten Sie mir mehr darüber erzählen?
- nichts. Hat nicht funktioniert.
- nicht meine, die war eigentlich Los, um das Problem zu lösen Sie gefragt... es war mehr Allgemeine Informationen 🙂
- Vielen Dank also, irgendwelche Ideen?
- Erstellen Sie ein neues PDO-Objekt mehrere Male in das gleiche Skript? In der Regel, dass die einmal pro Skript vor der Ausführung der Funktion. Wenn Sie versuchen, öffnen mehrere verbindungen im gleichen script, der server ist möglicherweise zu leugnen, es aus irgendeinem Grund.
- Michael Nein nicht im selben Skript überhaupt nicht.
- Dieses Skript ist komplett getrennt von allem anderen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht unbedingt Teil des Problems, sondern Sie sind mit vorbereiteten statmemnts falsch. Der Sinn der Verwendung von prepared-Statements ist so, dass die DB kümmert sich um die db-spezifischen entkommen. Um dies zu tun, schreiben Sie die Abfrage mit Platzhalter, die dann ersetzt mit der die übergebenen Werte zu der Aussage. Also in diesem Fall:
Oder mit benannten Platzhaltern, die ist etwas robuster:
Nun soweit, Ihre Fehler-id sein bereit zu Wetten, Sie mit
localhost
als der hostname, die Probleme verursachen können, auf windows - versuchen Sie es mit127.0.0.1
statt. So zum Beispiel:Figured it out Jungs, vielen Dank für Ihre Hilfe. Ich habe tatsächlich benötigt, um füllen Sie alle Spalten mit Daten für Sie zu arbeiten. Zum Beispiel hatte ich (firstname,lastname,email,Telefon) habe ich benötigt, um füllen Sie username,Passwort,status Teil. Vielen Dank für Eure Hilfe Jungs! Hoffe dies hilft wer fällt in das gleiche Loch!