Closed. This question is off-topic。它目前不接受答案。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
四年前关闭。
我有一张桌子,可以放顾客。还有一个我负责销售的地方。
当我存了一些钱,我就继续卖客户的身份证,当我出现在名单上时,
我给顾客看身份证
问题是,在寻找销售时,不要让我一个人呆着,那些记录在案的客户会给我显示所有的记录
$query = "SELECT  *
  FROM ventas
  WHERE idusuario = $_SESSION[k_username]
  union
  SELECT  *
  FROM reparaciones
  WHERE marca LIKE '%" . $name .  "%'
  OR modelo LIKE '%" . $name ."%'" ;

还有这个
$query="SELECT  *
  FROM ventas
  WHERE idusuario = $_SESSION[k_username]
     marca LIKE '%" . $name .  "%'
  OR modelo LIKE '%" . $name ."%'";

但都不管用

最佳答案

欢迎来到这里。
我强烈建议你做一些关于SQL InjectionPrepared Statements的研究。我将按原样解决您的问题,而不考虑您当前设置的安全漏洞。
查询字符串无效,请尝试以下操作:

$query = "SELECT  *
    FROM ventas
    WHERE idusuario = '". $_SESSION['k_username'] ."'
    UNION
    SELECT  *
    FROM reparaciones
    WHERE marca LIKE '%". $name ."%'
        OR modelo LIKE '%". $name ."%'
    ";


$query = "SELECT  *
    FROM ventas
    WHERE idusuario = '". $_SESSION['k_username'] ."'
        OR marca LIKE '%". $name ."%'
        OR modelo LIKE '%". $name ."%'
    ";

另外,在您的第一个查询中,您正在使用联合,请确保该查询的两部分返回的列数相同。
更新
SQL注入的例子可以在internet上找到(包括在我链接到上面的php.net手册页上)。从您在OP中给出的示例来看,不清楚您是否正在清理数据,即:$_SESSION['k_username']和$name,因为您将它们直接包含在查询字符串中,所以这些可能是注入点。
例如,如果$name恰好是用户输入(例如来自搜索表单),并且用户提供:
x'; DELETE FROM usuario WHERE 1=1; --

现在,当在第二个查询中使用它时,查询字符串变为(仅使用123作为用户id的示例):
SELECT  * FROM ventas WHERE idusuario = 123 OR marca LIKE '%x'; DELETE FROM usuario WHERE 1=1; --%' OR modelo LIKE '%". $name ."%'

现在当查询运行时,用户表变为空。
当然,这只是一个例子。也许你的用户表不是“usuario”。。。事实仍然是,你有一个漏洞,它为有人渗透你的系统留下了一个漏洞。也许他们只会略过一些数据(用户名、密码、联系方式等),也许他们会注入自己的数据,也许他们会毁掉你的整个数据库,谁知道呢。你真的想冒这个险吗?
因此,下面是一个示例,说明如何使用准备好的声明来帮助降低风险:
$sql = "SELECT  *
    FROM ventas
    WHERE idusuario = :userid
        OR marca LIKE ':name'
        OR modelo LIKE ':name'
    ";
$params = array(
    'userid' => $_SESSION['k_username'],
    'name' => '%'. $name .'%'
);

$db = new PDO(...); // replace ... with your connection info
$query = $db->prepare($sql);
$query->execute($params);
$results = $query->fetchAll();

这只是一个例子,还有其他的方法(在上面的链接中列出了一些例子)。

10-07 12:51
查看更多