Php Mysqli为多个数据库准备了语句
我正在开发一个从一个数据库到另一个数据库的导入功能,我想试试内置的Mysqli功能 我已经打开了两个连接,每个数据库一个,在选择是否插入数据之前,我正在循环使用旧的连接(以获取现有用户),并对新的连接进行检查 现在我不确定我是否误用了prepared statements功能,或者是什么,因为我很难得到正确的结果。一个简单的测试用例是: $oldDB = new Mysqli(HOST, USER, PASS, 'oldDB'); $newDB = new Mysqli(HOST, USER, PASS, 'newDB'); /* * Prepared statments */ $searchUserStmt = $newDB->prepare('SELECT user_id FROM members WHERE user_id=?'); $searchUserStmt->bind_param('i', $old_user_id); $searchUserStmt->bind_result($user_id); /** * Loop through users */ $result = $oldDB->query('SELECT * FROM member_profile LIMIT 10'); while($row = $result->fetch_assoc()) { var_dump($row['user_id']); // Check if user is already in DB $old_user_id = $row['user_id']; $searchUserStmt->execute(); $searchUserStmt->fetch(); $searchUserStmt->reset(); var_dump($user_id); }Php Mysqli为多个数据库准备了语句,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我正在开发一个从一个数据库到另一个数据库的导入功能,我想试试内置的Mysqli功能 我已经打开了两个连接,每个数据库一个,在选择是否插入数据之前,我正在循环使用旧的连接(以获取现有用户),并对新的连接进行检查 现在我不确定我是否误用了prepared statements功能,或者是什么,因为我很难得到正确的结果。一个简单的测试用例是: $oldDB = new Mysqli(HOST, USER, PASS, 'oldDB'); $newDB = new Mysqli(HOST, USER,
有人知道我做错了什么吗?我浏览了Mysqli文档,但没有找到任何对我有帮助的东西 好的,我发现了问题,一切正常,但是在
mysqli\u stmt::bind\u result()
中使用的变量似乎不会得到更新,除非找到行。在我的测试中,只找到了第一个用户,这导致每次都返回1
当找不到结果时,mysqli\u stmt::fetch()
将返回NULL
,因此我只需稍微像这样修改代码:
while($row = $result->fetch_assoc())
{
var_dump($row['user_id']);
// Check if user is already in DB
$old_user_id = $row['user_id'];
$searchUserStmt->execute();
if($searchUserStmt->fetch() === NULL)
{
// Insert user here
}
$searchUserStmt->reset();
}
而($row=$result->fetch_assoc())
{
var_dump($row['user_id']);
//检查用户是否已在数据库中
$old_user_id=$row['user_id'];
$searchUserStmt->execute();
如果($searchUserStmt->fetch()==NULL)
{
//在此处插入用户
}
$searchUserStmt->reset();
}
while($row = $result->fetch_assoc())
{
var_dump($row['user_id']);
// Check if user is already in DB
$old_user_id = $row['user_id'];
$searchUserStmt->execute();
if($searchUserStmt->fetch() === NULL)
{
// Insert user here
}
$searchUserStmt->reset();
}