• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

bind_param Parameterübergabe

mezzix

Neues Mitglied
Hallo,
Ich hab zu Zeit ein kleines Problem mit PHP und MySQL. Ich möchte Prepared-Statements nutzen. Das Problem ist nun ich frage mit mehreren IFs ab, ob ich die entsprechende Post-Variable brauche. Die nutze ich für meine Suche. Wenn der die Post-Variable keinen veränderten Wert oder keinen Wert enthält wird sie nicht beachtet. Jetzt nutze ich bind_param und muss ja dort die Werte übergeben. Es kann aber sein das ich manchmal nur einen und manchmal bis zu vier übergeben muss. Nun steh ich auf dem Schlauch.
Hier einmal der Code:

if ((empty($_POST["VName"])) && (empty($_POST["NName"])) && (empty($_POST["BankID"])) && (empty($_POST["KundenID"]))) {
echo "Keine Eingabe.";
} else {
if (!empty($_POST["VName"])) {
$type .= "s";
$VName = $_POST["VName"];
$sql .= ' AND VName = "?"';
}
if (!empty($_POST["NName"])) {
$type .= "s";
$NName = $_POST["NName"];
$sql .= ' AND NName = "?"';
}
if (!empty($_POST["BankID"])) {
$type .= "s";
$BankID = $_POST["BankID"];
$sql .= ' AND BankID = "?"';
}
if (!empty($_POST["KundenID"])) {
$type .= "s";
$KundenID = $_POST["KundenID"];
$sql .= ' AND KundenID = "?"';
}

$stmt = $verbindung->prepare($sql);
$stmt->bind_param($typ, //Hier müssen die Werte übergeben werden

//Suche in Tabelle ausgeben
tabelle($sql);
}


Wie kriege ich das nun hin? Ich bin echt ratlos.
 
Und initialisiere die Verbindung vorher schon. Dann kannst du die methode bind_param() direkt im case aufrufen.
 
Oh sorry, war irgendwie geistig abwesend.

Aber das hier könntest du machen..
PHP:
if (!empty($_POST)) {
    foreach ($_POST as $key => $value) {
        //Hier dann mit switch oder auch if die ArrayKeys auf Existenz prüfen.
    }
}
 
Hmm... Ich weiß nicht wie mir das helfen soll die Parameter dynamisch zu übergeben. Über Google habe ich verschiedene Foreneinträge gefunden. Ich hab meinen Code mal erweitert. Vielleicht weiß ja jemand weiter.

$type;
$array = array();


if ((empty($_POST["VName"])) && (empty($_POST["NName"])) && (empty($_POST["BankID"])) && (empty($_POST["KundenID"]))) {
echo "Keine Eingabe.";
} else {
if (!empty($_POST["VName"])) {
$type .= "s";
$sql .= ' AND VName = "?"';
$array["VName"] = $_POST["VName"];
}
if (!empty($_POST["NName"])) {
$type .= "s";
$sql .= ' AND NName = "?"';
$array["NName"] = $_POST["NName"];
}
if (!empty($_POST["BankID"])) {
$type .= "s";
$sql .= ' AND BankID = "?"';
$array["BankID"] = $_POST["BankID"];
}
if (!empty($_POST["KundenID"])) {
$type .= "s";
$sql .= ' AND KundenID = "?"';
$array["KundenID"] = $_POST["KundenID"];
}

$stmt = mysqli_prepare($verbindung, $sql);
call_user_func_array(array($stmt, 'bind_param'), array_merge(array($stmt, $type), $array));
mysqli_stmt_execute($stmt);
mysqli_store_result($stmt);
echo "test";
$ergebnis = mysqli_stmt_get_result($stmt);
echo "test";
//Suche in Tabelle ausgeben
tabelle($ergebnis);


$ergebnis = $stmt->get_result(); scheint nicht zu funktionieren, weil der Code da nicht weiterarbeitet.

Edit: Hab grade bemerkt das mysqli_store_result($stmt); ein FALSE zurückgibt.
 
Zuletzt bearbeitet:
Zurück
Oben