SqL语句中的AND和OR不起作用

I am trying to retrieve some information from database but I guess I am doing something wrong because I am only able to retrieve half info not full. Please let me know where i am wrong

In Below code there are two SQL statements 1st) $sql and 2nd) $result. I have problem in $sql statement.

UPDATE- QUESTION HAS BEEN SOLVED.SEE Below for answer

<?php
include "head.html";
echo '</div>';
 $search_id =  $_GET["id"]; 

   $dbhost = 'localhost';
   $dbuser = 'lemonwork';
   $dbpass = 'lemonwork@2014';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT * FROM lemontable where STORE_ID=';
   $val=" AND (DESCRIPTION=%'Toy'% OR TITLE=%'TOY'% OR Category=%'TOY'%)";
   $sql=$sql.$search_id.$val;
   $result='SELECT  STORE_LOGO, Lemon_COUNT FROM lemoncount where STORE_ID=';
$result=$result.$search_id;
   mysql_select_db('lemondata');
   $retval = mysql_query( $sql, $conn );
   $retval1=mysql_query($result, $conn);
   $x=0;
   if ($result) {
  $row1 = mysql_fetch_assoc($retval1);

echo'<div style="text-align: center;">';
  echo'<img src="'.$row1['STORE_LOGO'].'"style="display: block; margin-left: auto;  margin-right: auto;">';
  echo 'Total Coupons: '.$row1['COUPON_COUNT'].'<br/>';
echo'</div>';
  }
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {   
echo "<table>";
  echo '<tr><th><a href="'.$row["LINK"].'"><img src="'.$row1["STORE_LOGO"].'"></th>';
echo "<td style='padding-left: 6px !important;'><a href='".$row['LINK']."'><h1>".$row["title"]. "</h1></a>";
echo "<br/><strong>By</strong> ".$row["STORE_NAME"]."<br/><strong>Expire on:</strong> ".$row["Dates"]."<br/><strong>Category:</strong> ".$row["Category"]."<br/><strong>work:</strong> ".$row["work"]."<br/><strong>DESCRIPTION:</strong> ".$row["DESCRIPTION"]."<b style='color:Blue'> Read More"."<hr></td></tr>";

}       
echo '</table>';
   mysql_close($conn);
?>
dongzhang0243
dongzhang0243 问题已经解决了。谢谢你的帮助。我不能投票给你的答案,因为我没有足够的积分,但仍然要感谢
3 年多之前 回复
duan1930
duan1930 然后使用LIKE而不是=;%wildcard应该在引号内,而不是在...之外....然后重写它以使用带有预准备语句的bindvars
3 年多之前 回复
dpjr86761
dpjr86761 当我使用echo$sql打印$sql时;它给了我这个声明“select*fromlemontable,其中Store_id=1192AND(DESCRIPTION%'TOY'%ORTITLE=%'TOY'%”
3 年多之前 回复
dongyou2635
dongyou2635 对于调试,首先打印出$sql的内容。它包含您认为应该包含的内容吗?当您尝试在SQL客户端中运行此查询时,此查询是否有效。然后从那里去。但正如其他人所指出的那样,您的代码中也存在一些重要的安全问题,应该予以解决。
3 年多之前 回复
dtxob80644
dtxob80644 是的@MarkBaker。我想在描述和标题中找到“玩具”,如果它在那里它应该pring。
3 年多之前 回复
dqenv99518
dqenv99518 你应该在所有查询中使用mysql_error()。
3 年多之前 回复
dowaw80220
dowaw80220 我知道,下周我会改变它。但是现在请帮忙
3 年多之前 回复
dr2898
dr2898 (DESCRIPTION=%'玩具'%%符号是什么?你想尝试使用LIKE吗?
3 年多之前 回复
dqz30992
dqz30992 好吧,你有一个回声“<table>”;在你的循环中,然后在该循​​环之外的</table>。这样就打破了你桌面的标记。
3 年多之前 回复
donglu3087
donglu3087 DESCRIPTION=%'玩具'%<%符号应在撇号内;但实际上你在MATCH中使用绑定参数会更好...反对所有相关列的FULLTEXT索引。
3 年多之前 回复
doupeizheng3918
doupeizheng3918 LittleBobby说你的脚本存在SQL注入攻击的风险..即使转义字符串也不安全!
3 年多之前 回复
dongwuxie7976
dongwuxie7976 请停止使用mysql_*函数。这些扩展已在PHP7中删除。了解PDO和MySQLi的预处理语句并考虑使用PDO,这非常简单。
3 年多之前 回复

2个回答



我认为您需要这样的基础SQL查询:</ p>

  select * from  lemontable 
其中store_id = 1192和(
描述如'%TOY%'或
标题如'%TOY%'

</ code> </ pre>

这将 返回给定商店中标题或描述中包含单词toy的任何记录。</ p>

但是,您应该在以下内容中重写此代码,而不是简单地更改代码以更正此语法。 一种更安全的方式,使用参数化查询。 您在此处显示的代码可能允许恶意用户操纵您的Web表单,以执行删除或更改数据,窃取隐私信息或阻止您的网站脱机的操作。 简而言之:不好。</ p>

评论中有许多有用的链接,但特别是这一个给出了一个应该作为一个良好起点的例子。</ p>
</ div>

展开原文

原文

I think you want an underlying SQL query like this:

select * from lemontable
    where store_id=1192 and (
       description like '%TOY%' or
       title like '%TOY%'
    )

This will return any records within the given store where the title or the description contain the word toy.

However, rather than simply slightly changing your code to correct this syntax, you really ought to rewrite this in a more secure way, using parameterized queries. The code you have shown here would potentially allow malicious users to manipulate your web form to do things like delete or alter your data, steal private information, or bog down your site to take it off line. In short: not good.

There were a number of helpful links in the comments, but this one in particular gives an example that should serve as a good starting point.



请更改您的SQL查询,如下所示</ p>

  $ sql =“SELECT * FROM  lemontable其中STORE_ID =“。$ search_id; 
$ sql。=”AND(DESCRIPTION LIKE'%Toy%'或'TITLELIKE'%TOY%'或Category` LIKE'%TOY%') “;

$ result =”SELECT STORE_LOGO,Lemon_COUNT FROM lemoncount whereSTORE_ID =“。$ search_id;
</ code> </ pre>
</ div>

展开原文

原文

Please change your SQL Queries Like below

$sql = "SELECT * FROM lemontable where `STORE_ID` = ".$search_id;
$sql .= " AND ( `DESCRIPTION` LIKE '%Toy%' OR `TITLE` LIKE '%TOY%' OR `Category` LIKE '%TOY%' ) ";

$result = "SELECT  STORE_LOGO, Lemon_COUNT FROM lemoncount where `STORE_ID` = ".$search_id;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐