我正在尝试从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。
让我知道,我理解错误。
感谢。
答案 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_param
,s
表示字符串,i
表示整数,you can read more here。
所以i
意味着我们将输入1个整数。