2016-05-05 3 views
-1

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 
+1

was übergeben Sie an die Funktion in $ place? – carmel

+0

Sie haben 'queryObject' anstelle von' $ queryObject' an einigen Stellen verwendet –

+0

und Sie haben einen Fehler in Ihrem PHP-Beispiel. Abfrageobjekt ['Abfrage']; sollte $ queryObject ['query'] sein; – carmel

Antwort

1

Sie haben vergessen $ vor queryObject zu platzieren. Das sollte funktionieren:

$query = $queryObject['query']; 
$queryParams = $queryObject['queryParams']; 
$queryParamTypes = $queryObject['queryParamTypes'];