1 | <?php |
||||
2 | /* Database utility functions */ |
||||
3 | namespace AL\Db; |
||||
4 | |||||
5 | /** |
||||
6 | * Get an error context message |
||||
7 | * |
||||
8 | * @param $context Human friendly context message |
||||
0 ignored issues
–
show
|
|||||
9 | * @return An error context string |
||||
0 ignored issues
–
show
The type
AL\Db\An was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
10 | */ |
||||
11 | function get_error_context($context) { |
||||
12 | return "(Context: $context)"; |
||||
0 ignored issues
–
show
|
|||||
13 | } |
||||
14 | |||||
15 | /** |
||||
16 | * Prepare a statement for the given query and parameters and handle errors |
||||
17 | * |
||||
18 | * @param $context A human-friendly string giving the context the query is running |
||||
0 ignored issues
–
show
The type
AL\Db\A was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
19 | * in. This will be output in error messages if something goes wrong |
||||
20 | * @param $mysqli Database connection |
||||
0 ignored issues
–
show
The type
AL\Db\Database was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
21 | * @param $query The SQL query to execute, using ? placeholders for parameters |
||||
22 | * @param $bind_string The string representing the types of parameters to bind |
||||
0 ignored issues
–
show
The type
AL\Db\The was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
23 | * (See mysqli_bind_param()), e.g. "ss" for 2 strings. Pass NULL if the query |
||||
24 | * doesn't have parameters |
||||
25 | * @param $params The list of parameters to bind. Pass NULL if the query doesn't |
||||
26 | * have parameters |
||||
27 | * @return A prepared statement that has been executed |
||||
28 | */ |
||||
29 | function execute_query($context, $mysqli, $query, $bind_string, ...$params) { |
||||
30 | $err_ctx = get_error_context($context); |
||||
31 | |||||
32 | $stmt = $mysqli->prepare($query) |
||||
33 | or die("Error preparing query [$query] $err_ctx: ".$mysqli->error); |
||||
0 ignored issues
–
show
|
|||||
34 | |||||
35 | if ($bind_string !== null) { |
||||
36 | $stmt->bind_param($bind_string, ...$params) |
||||
37 | or die("Error binding parameters $err_ctx"); |
||||
0 ignored issues
–
show
|
|||||
38 | } elseif (strstr($query, "?")) { |
||||
39 | die("Error: The query [$query] contained parameters (?) but didn't have a bind string $err_ctx"); |
||||
0 ignored issues
–
show
|
|||||
40 | } |
||||
41 | |||||
42 | $stmt->execute() |
||||
43 | or die("Error executing statement for [$query] $err_ctx: ".$mysqli->error); |
||||
0 ignored issues
–
show
|
|||||
44 | |||||
45 | return $stmt; |
||||
46 | } |
||||
47 | |||||
48 | /** |
||||
49 | * Bind variables to a prepared statement and handle errors |
||||
50 | * |
||||
51 | * @param $context A human-friendly string giving the context the query is running |
||||
52 | * in. This will be output in error messages if something goes wrong |
||||
53 | * @param $stmt Prepared statement to bind results on |
||||
0 ignored issues
–
show
The type
AL\Db\Prepared was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
54 | * @param $params Variables to bind to the statement result |
||||
0 ignored issues
–
show
The type
AL\Db\Variables was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
55 | */ |
||||
56 | function bind_result($context, $stmt, &...$params) { |
||||
57 | $err_ctx = get_error_context($context); |
||||
58 | |||||
59 | $stmt->bind_result(...$params) |
||||
60 | or die("Error binding results $err_ctx"); |
||||
0 ignored issues
–
show
|
|||||
61 | } |
||||
62 | |||||
63 | /** |
||||
64 | * Assemble multiple constraints into a SQL string with the proper |
||||
65 | * WHERE / AND syntax depending on the number of constraints |
||||
66 | * @param $constraints A list of constraints, like "id = ?" or |
||||
67 | * "name LIKE ?". |
||||
68 | * @return String A SQL string with constraints suitable |
||||
69 | * to use in a SQL query |
||||
70 | */ |
||||
71 | function assemble_constraints($constraints) { |
||||
72 | $query = ""; |
||||
73 | if (count($constraints) > 1) { |
||||
74 | $query .= " WHERE ".array_shift($constraints); |
||||
75 | $query .= " AND ".join($constraints, " AND "); |
||||
0 ignored issues
–
show
' AND ' of type string is incompatible with the type array|null expected by parameter $array of join() .
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
76 | } elseif (count($constraints) == 1) { |
||||
77 | $query .= " WHERE ".array_shift($constraints); |
||||
78 | } |
||||
79 | |||||
80 | return $query; |
||||
81 | } |
||||
82 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths