子查询的问题(mysqli)

时间:2011-06-09 13:36:37

标签: mysql database mysqli

我正在尝试使用此查询,但我收到此错误:

警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:绑定变量数与预准备语句中的字段数不匹配

我认为问题是子查询,因为如果我只使用:

SELECT id_location_home FROM location_home WHERE location_home.location = ?

错误消失。

问题

($sql = $db -> prepare("
                UPDATE `database_charts`.`single_user` 
                SET `location_home_id_location_home` = (
                SELECT id_location_home FROM location_home 
                WHERE location_home.location = ?)"
            ));
            $sql -> bind_param('s', $location); // error here

            $sql -> execute();

我怎么能解决这个问题?可以将此查询更改为连接吗?可能解决了这个问题。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

UPDATE `database_charts`.`single_user` 
SET `location_home_id_location_home` = location_home.id_location_home
FROM location_home 
WHERE location_home.location = ?

此外,你的查询似乎很可疑。你真的想更新single_user中的每一行吗?