Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数组存储数据中是否存在id_Php_Mysql - Fatal编程技术网

Php 检查数组存储数据中是否存在id

Php 检查数组存储数据中是否存在id,php,mysql,Php,Mysql,这是一个扩展的问题 我正在使用逗号运算符检查存储数组中是否显示用户输入的id 我有这样的疑问 $sql="SELECT vendor.id, vendor.vendor_id AS VID, vendor.name AS VNAME, vendor.category, vendor.website, vendor.email, vendor.phone, vendor.locations, vendor.products, vendor

这是一个扩展的问题

我正在使用逗号运算符检查存储数组中是否显示用户输入的id

我有这样的疑问

$sql="SELECT 
  vendor.id, 
  vendor.vendor_id AS VID, 
  vendor.name AS VNAME, 
  vendor.category, 
  vendor.website, 
  vendor.email, 
  vendor.phone, 
  vendor.locations, 
  vendor.products, 
  vendor.vat, 
  vendor.pan, 
  location.loc_id, 
  location.name AS locname, 
  items.iid, 
  items.name 
  FROM vendor 
  INNER JOIN location ON vendor.locations = location.loc_id,items
  WHERE 
  items.iid IN (vendor.products) AND 
  items.iid='".$product."' AND 
  vendor.id=".$vendor; 
此处,vendor.products以1,3,5格式存储数据。输入的数据,即$products将具有单个id

我的查询没有返回任何数据,有什么问题吗

已编辑 我在items表中又添加了一列,名为iid,也是Varchar(string)类型,现在我将这些值存储在vendor.products表中,如下所示
ITM004、ITM003、ITM005
,查询仍然没有显示任何结果:(

您的SQL语法中有一个错误,也是一个PHP关联错误:

 AND vendor.id=".$vendor.""
因为它是语句的最后一部分,所以结尾不需要“
。但是,如果
$vendor
是字符串,则需要对其进行字符串封装

AND vendor.id='".$vendor."';
否则,如果它是INT,它只是:

AND vendor.id=".$vendor;

尝试一下:使用
LEFT
join而不是
internal
,并确保on-join列匹配

不能像这样使用字符串和int进行连接:

供应商.products=items上的
内部联接项目。项目\u id
错误,因为

products:1,2,3 and item_id=1
所以试着用这个:

$sql="SELECT 
      vendor.id, 
      vendor.vendor_id AS VID, 
      vendor.name AS VNAME, 
      vendor.category, 
      vendor.website, 
      vendor.email, 
      vendor.phone, 
      vendor.locations, 
      vendor.products, 
      vendor.vat, 
      vendor.pan, 
      location.loc_id, 
      location.name AS locname, 
      items.item_id, 
      items.name 
      FROM vendor 
      INNER JOIN location ON vendor.locations = location.loc_id,items
      WHERE 
      items.item_id IN (vendor.products) AND 
      items.item_id=".$product." AND 
      vendor.id=".$vendor; 

从您的问题中,我认为您正在尝试将整数列(item_id)与字符串列(vendor.products)连接起来,因为您提到这些值存储在单独的值中

供应商产品上的内部联接项目=项目。项目id


因此,结论是上述查询不起作用。您必须将整数列与整数列和字符串列与字符串列连接起来

小心SQL注入攻击!请在php页面中回显此查询并将其粘贴到此处…执行上述操作时是否有任何错误?
选择vendor.id,vendor.vendor\u id作为VID,vendor.name作为V名称,vendor.category,vendor.website,vendor.email,vendor.phone,vendor.loc,vendor.pan,location.locu id,location.NAME作为locname,items.item\u id,items.NAME来自vendor.products上的供应商左侧连接项=items.item\u id供应商上的内部连接位置=location.locu id,其中items.item\u id位于(vendor.products)和items.item_id=5和vendor.id=2请立即停止并阅读:.`AND vendor.id=“.$vendor.”`此处最后一个
用于关闭我的
SELECT
语句。如果我删除它,它将抛出error@user2823107否。在断开解释器以便连接时,您关闭了之前的
选择字符串。请删除
“”
结尾处。因为产品和项目id是不同类型的,它们永远不会相等。@user2823107尝试使用当前sql。哦,我不能将项目id列设为整数,因为它是主键,而且如果我将产品列设为整数,我也不能存储数组数据:)我能做什么then@user2823107您也可以连接两个字符串列,这没有问题。对于示例表,每个字段中唯一应该是单个项。a=table.b其中a有值“test”,b必须包含值“test”。然后两个表都将连接ie test=test。此test=test,test1将不起作用,我必须使这两个数据都为Ype相同,对吗?没有其他方法:(是的。你必须这样做。你可以尝试使用左联接,但这不会给你正确的结果。请从两个表(你正在尝试联接)即vendor.products和items.item_id中粘贴一些值