【问题标题】:select stmt->fetch doesn't show the queries after a variable LIKE statementselect stmt->fetch 在变量 LIKE 语句之后不显示查询
【发布时间】:2016-11-09 20:34:20
【问题描述】:

所以我有更多的查询,其中包含取自 $keywords 的值,当我调用 stmt->fetch() 时没有出现这些值我的表有一些结构(列)所以我尝试搜索关键字(列)然后显示titlu(column) 包含特定关键字的查询 ($keywords) 但即使我在关键字列值 top 中有一个示例也没有显示任何内容强>顶部

$stmt = $con->prepare('SELECT keywords FROM stiinta WHERE link = ? LIMIT 1');
$stmt->bind_param('s', $pageid);
$stmt->execute();
$stmt->bind_result($keyword);//variabla pe care o vrei inlocuita prin bind_Result in loc de get_Result
while ($stmt->fetch())    {
   $keyword;    // faci acelasi lucru fara $row 
}
$stmt->close();

测试

$stmt = $con->prepare("SELECT id, titlu, link, poza, alt, keywords, linknews FROM stiinta WHERE   approved='1' AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  ? UNION SELECT id, titlu, link, poza, alt, keywords, linknews FROM travel WHERE   approved='1' AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  ? UNION SELECT id, titlu, link, poza, alt, keywords, linknews FROM stiinta WHERE   approved='1' AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  ? UNION SELECT id, titlu, link, poza, alt, keywords, linknews FROM natura WHERE   approved='1' AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  ? UNION SELECT id, titlu, link, poza, alt, keywords, linknews FROM lifestyle WHERE   approved='1' AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  ? LIMIT 10");
$stmt->bind_param("sssss", $keyword, $keyword, $keyword, $keyword, $keyword);
$stmt->execute();
if(!$stmt->execute()){
    echo "a aparut o eroare";}
$stmt->bind_result($id, $titluKEY, $linkKEY, $pozaKEY, $altKEY, $keywordKEY, $linknewsKEY);//variabla pe care o vrei inlocuita prin bind_Result in loc de get_Result
$stmt->store_result();
if ($stmt->num_rows == 0) {// verificare daca este vrun query
    echo "You did not have any queries to match.<br>";
} else {
$stiintalist = '';
while ($stmt->fetch())    {
    $id;
    $titluKEY;
    $linkKEY;
    $pozaKEY;
    $altKEY; 
    $keywordKEY;
    $linknewsKEY;   // faci acelasi lucru fara $row trb sa fie in concordanta cu ceea ce este in SELECT column pentretu teste a href="/page-stiinta.php?pid='.$linkKEY.'"
    $stiintalist .= '<div id="articol-content-more"><a href="/'.$linknewsKEY.'"><img src="/images/'.$pozaKEY.'.jpg"class="articol-content-more-image" alt="'.$altKEY.'"><p class="articol-content-more-title">'.$titluKEY.'</p></a><span><a class="articol-content-more-afla" href="/'.$linknewsKEY.'">Citește mai multe</a></span><span class="articol-content-more-fl"><div class="fb-share-button" data-layout="button_count" data-href="http://esticurios.ro/'.$linknewsKEY.'"></div></span></div>';        
    }
}
$stmt->free_result();
$stmt->close();

echo $stiintalist;

给我看你没有任何要匹配的查询所以这意味着$stmt-&gt;num_rows == 0 是空的,即使我在其他查询中有一些词....

【问题讨论】:

    标签: php mysql select fetch


    【解决方案1】:

    你的列可能是 char 类型,然后尝试添加 wildchar

    $stmt = $con->prepare("
    
        SELECT id, titlu, link, poza, alt, keywords, linknews 
        FROM stiinta 
        WHERE   approved='1' 
          AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  concat('%', ? , '%') 
        UNION 
        SELECT id, titlu, link, poza, alt, keywords, linknews 
        FROM travel 
        WHERE   approved='1' 
          AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  concat('%', ? , '%') 
        UNION 
        SELECT id, titlu, link, poza, alt, keywords, linknews 
        FROM stiinta 
        WHERE   approved='1' 
          AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  concat('%', ? , '%') 
        UNION 
        SELECT id, titlu, link, poza, alt, keywords, linknews 
        FROM natura 
        WHERE   approved='1' 
          AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  concat('%', ? , '%') 
        UNION 
        SELECT id, titlu, link, poza, alt, keywords, linknews 
        FROM lifestyle 
        WHERE   approved='1' 
          AND  replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE  concat('%', ? , '%') 
        LIMIT 10
        ");
    

    【讨论】:

    • 没有显示任何结果.. 给了我$stmt-&gt;num_rows == 0 的回声条件,所以意味着我错过了一些东西
    • 尝试仅使用 SQL ide 进行选择,并确保您的查询是正确的 .. 最终显示正确的数据样本和预期的结果
    • 我只尝试SELECT id, titlu, link, poza, alt, keywords, linknews FROM stiinta WHERE approved='1' AND replace(replace(replace(titlu, ',', ''), '-', ''), ' ', '') LIKE concat('%', ? , '%') 但同样的问题...
    • 对不起,我在$stmt-&gt;store_result(); 之后调用了$num_of_rows = $stmt-&gt;num_rows; 并给了我价值0 所以我在选择语句中遗漏了一些东西......
    • 在 sql 控制台或 IDE 中使用评论中的查询 ..查询是否正常工作?
    【解决方案2】:

    由于您的 $pageid 可能是一个整数 (?),您可以尝试将第二行更改为

    $stmt->bind_param('i', $pageid);
    

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多