php插入数据库函数,然后在另一个函数中选择all错误
我正在运行一个php脚本,该脚本将在一个函数中向数据库插入一条新记录,插入后,我希望使用第二个函数从同一个数据库中获取所有内容,但出现以下错误 致命错误:未捕获错误:在上调用成员函数prepare 在/www1/fe5/www.seansdesigns.co.uk/web/foodApp/test.php:33堆栈中为空 跟踪:0/www1/fe5/www.seansdesigns.co.uk/web/foodApp/test.php9: getData 1{main}被抛出 /第33行的www1/fe5/www.seansdesigns.co.uk/web/foodApp/test.php 如果我分别调用这两个函数,它就会工作,因此sql工作正常php插入数据库函数,然后在另一个函数中选择all错误,php,sql,pdo,Php,Sql,Pdo,我正在运行一个php脚本,该脚本将在一个函数中向数据库插入一条新记录,插入后,我希望使用第二个函数从同一个数据库中获取所有内容,但出现以下错误 致命错误:未捕获错误:在上调用成员函数prepare 在/www1/fe5/www.seansdesigns.co.uk/web/foodApp/test.php:33堆栈中为空 跟踪:0/www1/fe5/www.seansdesigns.co.uk/web/foodApp/test.php9: getData 1{main}被抛出 /第33行的www
<?php
$test = "update";
if ($test == "update"){
insertWeight();
getData();
}
function insertWeight(){
require_once "connect.php";
$username = 'sean14';
$weight = '60';
$date = '20-01-03';
$sql = "INSERT INTO $username (date, weight) VALUES (:date, :weight)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":weight", $weight);
$stmt->bindParam(":date", $date);
$stmt->execute();
$stmt = null;
}
function getData(){
require_once "connect.php";
$username = 'sean14';
$stmt = $pdo->prepare("SELECT * FROM $username");
$stmt->execute();
$stmt = null;
$x = 0;
while ($row = $stmt->fetch()){
$x++;
$items[$x] = $row;
}
echo json_encode ($items);
}
?>
我认为问题在于,在第二个函数中,require_once将看到您已经在第一个函数中包含了数据库连接代码,但是$pdo将超出范围,因为它是在第一个函数中声明的。将db connect放在主代码体中,并将$pdo传递到所需的每个函数中。我认为问题在于,在第二个函数中,require\u once将看到您已经在第一个函数中包含数据库连接代码,但是$pdo将超出范围,因为它在第一个函数中声明。将db connect放在主代码体中,并将$pdo传递到所需的每个函数中。$pdo在两个函数中似乎都未定义。connect.php的内容是什么?我猜它是在那里定义的 但是,由于您告诉PHP只需要一次,它将只包含在insertWeight函数中。当您请求在getData中再次包含它时,它不会被包含,因为它在前面已经被包含。这也解释了为什么一次只调用一个函数没有问题 因此,要么将其更改为just require,或者,在我看来更好的是,在脚本开始时只需要一次,然后更改该文件,以便可以从其他函数中调用一个函数,该函数将返回连接对象 e、 g $pdo在两个函数中似乎都未定义。connect.php的内容是什么?我猜它是在那里定义的 但是,由于您告诉PHP只需要一次,它将只包含在insertWeight函数中。当您请求在getData中再次包含它时,它不会被包含,因为它在前面已经被包含。这也解释了为什么一次只调用一个函数没有问题 因此,要么将其更改为just require,或者,在我看来更好的是,在脚本开始时只需要一次,然后更改该文件,以便可以从其他函数中调用一个函数,该函数将返回连接对象 e、 g
在getData中,您将$stmt定义为null,然后尝试对其调用fetch函数。$pdo在包含的connection.php文件中定义。我还将$stmt移到了函数的底部,仍然是一样的。鉴于这两个函数将独立工作,这不应该是问题所在。在getData中,您将$stmt定义为null,然后尝试对其调用fetch函数。$pdo在包含的connection.php文件中定义。我还将$stmt移到了函数的底部,仍然是一样的。由于这两个功能都将独立工作,所以这不应该是问题。非常感谢,我曾将所需的_放在外部,但出现连接错误。没有意识到我必须将这个变量$pdo传递给每个function@Steve8428函数内部和外部的变量是分开的。我建议你读一读精彩的《谢谢你》,我曾经把所需的_放在外面,但是连接出错了。没有意识到我必须将这个变量$pdo传递给每个function@Steve8428函数内部和外部的变量是分开的。我建议你读一读
require_once "connect.php";
function insertWeight(){
$pdo = getPDOConnection(); //getPDOConnection will be a function defined in connect.php which returns a ready-made connection object.
//...etc