我需要一些帮助。我有一些嵌套的 SELECT 语句,它们获取用户的 ID,然后使用该 ID 搜索 MySQL 中的另一个表。如果文件系统中没有用户,我有一个 foreach() 循环,它使用第一个查询中的 user_id 为用户创建一个文件夹。然后我使用 bindParam() 为其分配一个变量并在另一个查询中使用它来获取用户名。但是,它会抛出异常,提示“在第 29 行的 C:\foo\bar\foobarscript.php 中调用一个成员函数 bindParam() on null”。这是我的代码,直到休息...
try {
$con = new PDO("mysql:host=$dbname;dbname=$db", $user, $pass);
//Set the PDO error mode to exception
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->beginTransaction();
$stmt = $con->prepare("SELECT user_id
FROM users");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$res = $stmt->fetchAll();
foreach($res as $row) {
$uid = $row['user_id'];
$filename = './reports/'.$uid.'';
if(!file_exists($filename)) {
if(!mkdir('./reports/'.$uid)) {
die('Failed to create folders..');
}
}
$stmt2->bindParam(':uid', $uid); //<--- Code breaks here
$stmt2 = $con->prepare("SELECT CONCAT(fname,' ',lname) as fullname FROM users WHERE user_id = :uid");
$stmt2->execute();
$fullName = $stmt2->fetchAll();
$userArray[] = array_fill_keys($uid, $fullName);
$stmt2->closeCursor();
}
我已经上下搜索并尝试重写它,逐个调试。一切正常,直到我将它们重新组合在一起并再次出现此错误。我真的很感激任何帮助!
编辑:我什至尝试删除分配的变量和绑定,如:
$stmt2->bindParam(':uid', $row['user_id']);