感谢阅读。
我有两个表,一个称为“ pagetable”,另一个称为“ tablestream”。
在我的PHP中,我有这段代码。
<?php
$sqlout1f = "SELECT source FROM pagetable WHERE output LIKE 'out1f'";
$resultout1f = mysqli_query($conn, $sqlout1f);
$sqlout1fsrc ="SELECT streamurl FROM tablestream WHERE vanrole LIKE '{resultout1f}'";
$resultsqlout1fsrc = mysqli_query ($conn,$sqlout1fsrc);
...
while($row = mysqli_fetch_array($resultsqlout1fsrc)) {
echo $row['streamurl'];
}
?>
我一点都没有收到任何错误,但是页面上也什么也没有得到。我尝试用该变量存储的字符串替换该变量,并且效果很好
编辑:一旦我将'$'放在我忘记的变量之前,就会得到:
可恢复的致命错误:在第22行的C:\ xampp \ htdocs \ newpage.php中,无法将mysqli_result类的对象转换为字符串
第22行是:$sqlout1fsrc ="SELECT streamurl FROM tablestream WHERE vanrole LIKE '{$resultout1f}'";
编辑2:out1f是文本,不是变量,有问题的变量是{$ resultout1f}
答案 0 :(得分:1)
您以错误的方式使用LIKE子句。这是LIKE子句的基础:
LIKE通常以3种方式使用:
1。)喜欢'%[STRING]%'-指定[STRING]可以在任何位置。
2。)LIKE'[STRING]%'-指定要以[STRING]开头的条件
3。)LIKE'%[STRING]'-指定要以[STRING]结尾的条件
遇到您的问题。您可以修改语句以使用占位符,并稍后用实际值替换占位符,如下所述:
$sqlout1f = "SELECT source FROM pagetable WHERE output LIKE '%out1f%'";
$sqlout1fsrc ="SELECT streamurl FROM tablestream WHERE vanrole LIKE '%[resultout1f]%'";
$resultout1f = mysqli_query($conn, $sqlout1f);
如果您的行数等于1:
$row = mysqli_fetch_array($resultout1f, MYSQLI_ASSOC);
$sqlout1fsrc = str_replace('[resultout1f]', $row['source'], $sqlout1fsrc);
$resultsqlout1fsrc = mysqli_query ($conn,$sqlout1fsrc);
while($row = mysqli_fetch_array($resultsqlout1fsrc, MYSQLI_ASSOC)) {
echo $row['streamurl'];
}
如果您的行数大于1:
while($row = mysqli_fetch_array($resultout1f, MYSQLI_ASSOC)) {
$sqlout2fsrc = $sqlout1fsrc;
$sqlout2fsrc = str_replace('[resultout1f]', $row['source'], $sqlout2fsrc);
$resultsqlout1fsrc = mysqli_query ($conn,$sqlout2fsrc);
while($row2 = mysqli_fetch_array($resultsqlout1fsrc, MYSQLI_ASSOC);) {
echo $row2['streamurl'];
}
}
您可以找到有关LIKE子句Here的更多信息。
希望这会有所帮助。
答案 1 :(得分:0)
其中有一个刻录问题,即以下代码;
$sqlout1f = "SELECT source FROM pagetable WHERE output LIKE 'out1f'";
$resultout1f = mysqli_query($conn, $sqlout1f);
$sqlout1fsrc ="SELECT streamurl FROM tablestream WHERE vanrole LIKE '{resultout1f}'";
$resultsqlout1fsrc = mysqli_query ($conn,$sqlout1fsrc);
如果将$
添加到第二个查询中(使用变量的位置),则说明您使用的是资源而不是字符串,这是因为$resultout1f
是第一个查询的结果,即数据集,而不是数据结果,您需要获取结果集的信息 out ,然后才能在辅助查询中使用其中的任何信息
答案 2 :(得分:-1)
使用LIKE时,您应将查询字符串与%%
绑定
SELECT * FROM TABLE WHERE COLUMN LIKE "%query%"
%a =>以sant a ,comm a
结尾的任何内容
a%=>任何以 a 复制, a nswer
%a%=>中间c a t,m a d a m