EuroCent
Klappstuhl 2.0
Hallo und Guten Morgen miteinander!
Ich sitze vor folgender Frage:
Ich habe eine SQl-Anweisung:
mittels Array vesuche Ich die ":email etc..." entsprechend zu ersetzen:
Führe Ich dies weiter fort:
Bekomme Ich diese Ausgabe:
Meine Frage dazu lautet: Wie kann Ich als Bezeichner in der SQL es so anweisen dass durch :email entsprechend an der Stelle der Paramenter gesetzt wird?
Wenn Ich mir die Beispiele auf php.net anschauen, arbeiten die nur mit "?".
Ist es an der Stelle auch nur so möglich?
Wenn Ich es so mache:
Dann funktioniert es auch.
Ich sitze vor folgender Frage:
Ich habe eine SQl-Anweisung:
SQL:
SELECT TOP 50 * FROM [dbo].[table_x] WHERE ([email] LIKE :email OR [firstname] LIKE :firstname OR [lastname] LIKE :lastname OR [username] LIKE :username OR [userid] LIKE :userid OR [position] LIKE :position)
mittels Array vesuche Ich die ":email etc..." entsprechend zu ersetzen:
PHP:
$suche = isset($_REQUEST['suche']) ? $_REQUEST['suche'] : "";
$params = array(":email" => "%{$suche}%", ":firstname" => "%{$suche}%", ":lastname" => "%{$suche}%", ":username" => "%{$suche}%", ":userid" => "%{$suche}%", ":position" => "%{$suche}%");
Führe Ich dies weiter fort:
PHP:
$mainPage = new Page();
$mainPage->setConnection($con);
$msconnect = $mainPage->msconnect_srv;
$stmt = sqlsrv_prepare($msconnect, $sql, $params);
if (!$stmt) {
printf('<pre>1: %s</pre>', print_r(sqlsrv_errors(), true));
}
$res = sqlsrv_execute($stmt);
if (!sqlsrv_execute($stmt)) {
printf('<pre>2: %s</pre>', print_r(sqlsrv_errors(), true));
}
Bekomme Ich diese Ausgabe:
Code:
2: Array
(
[0] => Array
(
[0] => 42000
[SQLSTATE] => 42000
[1] => 102
[code] => 102
[2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near ':'.
[message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near ':'.
)
[1] => Array
(
[0] => 42000
[SQLSTATE] => 42000
[1] => 8180
[code] => 8180
[2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared.
[message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared.
)
)
Meine Frage dazu lautet: Wie kann Ich als Bezeichner in der SQL es so anweisen dass durch :email entsprechend an der Stelle der Paramenter gesetzt wird?
Wenn Ich mir die Beispiele auf php.net anschauen, arbeiten die nur mit "?".
Ist es an der Stelle auch nur so möglich?
Wenn Ich es so mache:
PHP:
$sql = "SELECT TOP 50 * FROM [dbo].[table_x] WHERE ([email] LIKE ? OR [firstname] LIKE ? OR [lastname] LIKE ? OR [username] LIKE ? OR [userid] LIKE ? OR [position] LIKE ?)";
$params = array("%{$suche}%", "%{$suche}%", "%{$suche}%", "%{$suche}%", "%{$suche}%", "%{$suche}%");
Dann funktioniert es auch.