Ich habe eine Funktion geschrieben, die insert.php
in der Datei ist und sieht wie folgt aus:Interner Serverfehler in PDO-Statement?
<?php
function makeInsert($query, $paramArray){
include 'db.php';
try {
$pdo = new PDO("mysql:host=localhost;dbname=$db_name", $db_user, $db_pass);
$stmt = $pdo->prepare($query);
foreach($paramArray as $k => $v){
$currParamPlc = $paramArray[$k];
$currParamVal = $v;
//bind it
$stmt->bindParam('{$currParamPlc}', '{$currParamVal}', PDO::PARAM_STR);
}
$stmt->execute();
return "Success";
} catch (PDOException $e) {
$error = "Error!: " . $e->getMessage() . "<br/>";
return $error;
die();
}
}
?>
ich die Funktion aus einer anderen PHP-Datei aufrufen (run.php
) mit diesem Code:
<?php
include "./insert.php";
function run(){
$registration = "success";
$ammountInput= "12.34";
$kanalInput= "2";
$datumInput = "08.2017";
//[0] => Monat, [1] => Jahr
$datumArray = explode(".", $datumInput);
if ($registration == "success"){
$response_array['status'] = 'success';
$indexnameYear = ":year";
$indexnameMonth = ":month";
$indexnameAmount = ":amount";
$indexnameChannel = ":channel";
$parameter = array($indexnameYear => $datumArray[1], $indexnameMonth => $datumArray[0], $indexnameAmount => $ammountInput, $indexnameChannel => $kanalInput);
$insertIncomeQuery = "INSERT INTO `income`(`id`, `year`, `month`, `amount`, `channel`) VALUES (NULL, " . $indexnameYear . ", ". $indexnameMonth .", ". $indexnameAmount .", ". $indexnameChannel .")";
$returnValue = makeInsert($insertIncomeQuery, $parameter);
if($returnValue === "Success"){
echo "All done.";
}else if (strpos($returnValue, "Error!") !== false){
echo "Sorry!:" . $returnValue;
}
}else{
echo "something happened";
}
}
?>
Wenn ich rufe Die run()
Funktion in meiner index.php
Datei passiert nichts. Ich sehe nur den Fehler in den Entwickler-Tool in Google Chrome:
/insert.php Ressource konnte nicht geladen werden: Der Server mit dem Status 500 (Internal Server Error) reagierte
Gibt es eine Fehler in meiner makeInsert()
Funktion, die ich nicht sehe? Oder warum bekomme ich diesen Fehler, wenn ich versuche, die Funktion run()
auszuführen?
die _actual_ Fehlermeldung zu sehen, überprüfen Sie Ihre Server-Fehlerprotokoll. Sie können auch ändern, wie PHP Fehler anzeigt und ihm alle Fehler direkt auf dem Bildschirm anzeigen lassen (dies ist jedoch nicht in der Produktion erwünscht, da es sensible Daten anzeigen kann, aber während der Entwicklung sollten Sie). So zeigen Sie alle Fehler und Warnungen an: https://stackoverflow.com/questions/5438060/showing-all-errors-and-warnings –
''{$ currParamPlc}'' wird die Variable nicht erweitern, sie wird einfach übergeben die genaue Zeichenfolge durch.Verwenden Sie einfach $ stmt-> bindParam ($ currParamPlc, $ currParamVal, PDO :: PARAM_STR); ' – aynber
@aynber Ich habe es geändert und jetzt' 'makeInsert()' gibt mir 'Erfolg' zurück, aber in der Tabelle wird kein Datensatz eingefügt . Zumindest die 500 ist weg, aber es ist wirklich seltsam, dass nichts in der Datenbank passiert. Irgendeine Idee, wie ich das Problem finden könnte? – Fabian