1

我正在尝试从数据库中选择结果。

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

但是,他们两个都不适合我:(

$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 必须在打开新的之前关闭,即使它们有不同的名称。

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

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

我认为首先制作数组会产生冗余循环。

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

让我知道,我理解错误的方式。

谢谢。

4

1 回答 1

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_param,s表示字符串和i整数,您可以在此处阅读更多信息

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

于 2013-06-17T02:38:48.247 回答