由于增加了安全优势,我刚刚开始转换为 mysqli。转换为 mysqli 的主要原因是mysqli_multi_query
功能。我有几个长而复杂的查询,其中包含很多 JOINS,当我发现这个函数时,我想我可以通过将所有内容分解为单独的查询来使其更简单。
但是,我无法让查询按我的意愿工作,而且 PHP 手册对我没有帮助。
这是我到目前为止所拥有的;
$qry = "SELECT T.T_ID, T.name, T.pic, T.timestamp AS T_ts,
(SELECT COUNT(*) FROM track_plays WHERE T_ID = T.T_ID) AS plays,
(SELECT COUNT(*) FROM track_downloads WHERE T.T_ID = T_ID) AS downloads
FROM tracks T WHERE ID = '$ID';
";
$qry .= "SELECT S_ID, status, timestamp AS S_ts FROM status WHERE ID = '$ID';";
$qry .= "SELECT G_ID, gig_name, date_time, lineup, price, ticket, venue, G_pic, timestamp AS G_ts FROM gigs WHERE ID = '$ID'";
// Execute multi query
if (mysqli_multi_query($con,$qry)){
do {
// Store first result set
if ($result=mysqli_store_result($con)){
while ($row=mysqli_fetch_array($result)){
print_r($row);
}
}
}
while (mysqli_next_result($con));
}
这工作正常,数组按预期打印。但是,我想设置很多变量以供以后使用。我不会列出所有变量,但我有一些这样的;
$S_ID = htmlspecialchars($row['S_ID']);
$T_ID = htmlspecialchars($row['T_ID']);
$G_ID = htmlspecialchars($row['G_ID']);
变量被检索,但由于函数的循环性质,PHP 错误也给出了$S_ID
or$G_ID
未定义。$T_ID
不会得到未定义的错误,因为它是第一个查询,因为它没有循环。
如果您需要更多信息或者我解释得不够清楚,请询问!