Ich komme zu PHP aus anderen Sprachen und versuche, eine Funktion zu erstellen, die ein SQL-Abfrageobjekt zurückgibt, das die SQL-, die Param- und die Param-Typen enthält.PHP-Zugriffsdaten in Objekt
Code:
function buildSQLWhereClause($conn, $place) {
$query = "SELECT p.*, s.* FROM product p INNER JOIN product_shop ps ON ps.p_id = p.p_id INNER JOIN shop s ON s.s_id = ps.s_id WHERE ";
$queryParams = [];
$queryParamTypes = "";
$i = 0;
$len = count($place);
foreach ($place as $key => $value) {
if ($i == $len - 1) {
$query .= "$key = ?";
$queryParams[] = $value;
$queryParamTypes .= "s";
} else {
$query .= "$key = ? AND ";
$queryParams[] = $value;
$queryParamTypes .= "s";
}
$i++;
}
return array(
"query" => $query,
"queryParams" => $queryParams,
"queryParamTypes" => $queryParamTypes
);
}
$queryObject = buildSQLWhereClause($conn, $place);
$query = queryObject['query'];
$queryParams = queryObject['queryParams'];
$queryParamTypes = queryObject['queryParamTypes'];
$ queryObject hält die richtigen Informationen. Aber wie greife ich auf die Informationen in der $queryObject
? $query, $queryParams, and $queryParamTypes
alle halten den Wert "q"
. Warum halten diese 3 Variablen nicht den erwarteten Wert von $queryObject
?
PHP-Fehlerprotokoll:
[05-May-2016 19:14:25 Pacific/Auckland] PHP Notice: Use of undefined constant queryObject - assumed 'queryObject' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 47
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:14:25 Pacific/Auckland] PHP Warning: Illegal string offset 'query' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 47
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:14:25 Pacific/Auckland] PHP Notice: Use of undefined constant queryObject - assumed 'queryObject' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 48
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:14:25 Pacific/Auckland] PHP Warning: Illegal string offset 'queryParams' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 48
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:14:25 Pacific/Auckland] PHP Notice: Use of undefined constant queryObject - assumed 'queryObject' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 49
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:14:25 Pacific/Auckland] PHP Warning: Illegal string offset 'queryParamTypes' in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 49
[05-May-2016 19:14:25 Pacific/Auckland] PHP Stack trace:
[05-May-2016 19:14:25 Pacific/Auckland] PHP 1. {main}() /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:0
[05-May-2016 19:14:25 Pacific/Auckland] PHP 2. queryDbForProducts($conn = *uninitialized*, $place = *uninitialized*) /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:105
[05-May-2016 19:17:51 Pacific/Auckland] PHP Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php:55
Stack trace:
#0 /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php(105): queryDbForProducts(Object(mysqli), Array)
#1 {main}
thrown in /Applications/MAMP/htdocs/the_vegan_repository/scripts/back_end/get_products.php on line 55
was übergeben Sie an die Funktion in $ place? – carmel
Sie haben 'queryObject' anstelle von' $ queryObject' an einigen Stellen verwendet –
und Sie haben einen Fehler in Ihrem PHP-Beispiel. Abfrageobjekt ['Abfrage']; sollte $ queryObject ['query'] sein; – carmel