php mysqli使用第一个查询结果的多个查询

时间:2013-06-17 02:31:51

标签: php mysqli

我正在尝试从DB中选择结果。

我尝试了多个查询并准备好了。

但是,他们两个都不对我有用:(

$query = "SELECT u.id FROM user u;";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->bind_result($id);

while($stmt->fetch()){
$query = "SELECT position FROM company WHERE id = $id";
$stmt2 = $mysqli->prepare($query);
$stmt2->execute(); // error HERE (line 16)
$stmt_send->bind_result($position);
while($stmt->fetch()){
    print $position;
}

这是错误代码,

PHP Fatal error:  Call to a member function execute() on a non-object in /var/www/test.php on line 16

这里可能会遇到同样的问题,但我找不到任何解决此问题的解决方案。

请原谅我的搜索技巧并提前感谢你。


抱歉迟到了。

我从这个问题中学习。

STMT必须在打开新的STMT之前关闭,即使它们有不同的名称。

我解决了这个问题,将第一个结果保存到数组中并关闭它。

然后,用数组打开一个新的。

我认为它首先使得数组成为冗余循环。

当我了解这个问题时,如果您需要相同的查询更改参数,Prepared MySqli非常好。 O / W,只需使用简单的MySqli。

让我知道,我理解错误。

感谢。

1 个答案:

答案 0 :(得分:3)

单个查询怎么样?

SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id

以下是样本:

$db = new mysqli($host,$user,$pass,$dbselect);
if($db->connect_error)
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

$result = $db->query("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id");
if (!$result)
        die "Error: " . $db->error;

while ($row = $result->fetch_object())
{
    echo $row->position;
}
$result->close();
$db->close();

如果您需要能够指出ID,请将其替换为:

$result = $db->query("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id");
if (!$result)
        die "Error: " . $db->error;

while ($row = $result->fetch_object())
{
    echo $row->position;
}

有了这个:

$stmt = $db->prepare("SELECT c.position FROM user u LEFT JOIN company c ON u.id = c.id WHERE u.id = ?");
$stmt->bind_param('i',$_POST['id']);

if (!$stmt->execute())
       die('Insert Error ' . $db->error);

$result = $stmt->get_result();
while ($row = $result->fetch_assoc())
{
    echo $row['position'] ;
}

请注意查询上的询问符号和bind_params表示字符串,i表示整数,you can read more here

所以i意味着我们将输入1个整数。