Php 检查数组存储数据中是否存在id
这是一个扩展的问题 我正在使用逗号运算符检查存储数组中是否显示用户输入的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
$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中粘贴一些值