我无法找到解决方案,但却需要花费数小时的时间进行故障排除。挫折感稳步增长。
问题:在将网页转移到需要使用oop方法进行mysql接口的新提供程序后,我尝试重置所有sql命令行。这很好用。但有一部分我无法工作。被调用的php文件movie.php看起来像:
<?php
include 'scripts/init.php';
...
$cameraString = AssignPerson( $movieID, 'camera' );
?>
init.php的重要部分是:
<?php
session_start();
include 'scripts/connect2SQL.php';
include 'scripts/logInOut.php';
include 'scripts/classes_functions.php';
?>
connect2SQL.php读取
<?php
$connection2MySQL = mysqli_connect( "localhost" , "***" , "***", "***");
mysqli_query( $connection2MySQL , "SET CHARACTER SET 'utf8'" );
mysqli_query($connection2MySQL , "SET SESSION collation_connection ='utf8_unicode_ci'" );
?>
因此变量$ connection2MySQL表示与数据库的oop连接。
AssignPerson函数($ movieID,&#39; camera&#39;);在movie.php中定义了classes-文件classes_functions.php。这里,基本片段是
function AssignPerson( $objectID, $type = 'actor' ) {
$memoryString = '';
// THAT FOLLOWING LINE IS NOT WORKING :::
$persons = $connection2MySQL->query( "SELECT * FROM actors2movies" );
if ( mysqli_num_rows( $persons ) ) {
while ($person = mysqli_fetch_assoc( $persons )) {
$personID = $person['personeID'];
$memoryString .= $person['personName'];
}
}
return $memoryString;
}
浏览器中显示的错误消息如下所示:
致命错误:未捕获错误:在/var/www/web26777278/html/filmstadt-quedlinburg/scripts/classes_functions.php:173中调用null上的成员函数query()堆栈跟踪:#0 / var / www / web26777278 / html / filmstadt-quedlinburg / movie.php(354):在/ var / www / web26777278 / html中抛出的AssignPerson(&#39; 800&#39;,&#39; director&#39;)#1 {main}第173行的/filmstadt-quedlinburg/scripts/classes_functions.php
这里的问题是,当我删除查询的行(以及以下的行)时,程序可以正常工作。因此错误必须在上面指出的行中。另一方面,如果我将该行直接复制到movie.php中,该行就可以了!因此,必须对php-files的封装内容做一些事情。
我检查了是否需要在classes.php中重复SQL连接的包含行。我也查了一下,是否有遗忘的括号,数据库表中的拼写错误以及那种事情。无法帮助自己。
你知道我可以在哪里找到问题吗?
问候并谢谢你 弗兰克
答案 0 :(得分:0)
$connection2MySQL
在函数外部声明,因此在函数内部为null。
您必须将连接对象传递给函数才能正常工作