我正在使用PHP开发一个网站并拥有这段代码:
INSERT INTO items (producttype, firstcode, secondcode, brand, retailer, firstsize, secondsize)
SELECT ?, productcodes.id, productcodes.id, brands.id, retailers.id, sizes.id, sizes.id
FROM productcodes, brands, retailers, sizes
WHERE LOWER(productcodes.code)=LOWER(?)
AND LOWER(productcodes.code)=LOWER(?)
AND LOWER(brands.name)=LOWER(?)
AND LOWER(retailers.name)=LOWER(?)
AND LOWER(sizes.id)=LOWER(?)
AND LOWER(sizes.id)=LOWER(?)
但是当我有这样的输入时
INSERT INTO items (producttype, firstcode, secondcode, brand, retailer, firstsize, secondsize)
SELECT 3, productcodes.id, productcodes.id, brands.id, retailers.id, sizes.id, sizes.id
FROM productcodes, brands, retailers, sizes
WHERE LOWER(productcodes.code)=LOWER(NULL)
AND LOWER(productcodes.code)=LOWER(NULL)
AND LOWER(brands.name)=LOWER('Canada')
AND LOWER(retailers.name)=LOWER('WE')
AND LOWER(sizes.id)=LOWER('XL')
AND LOWER(sizes.id)=LOWER(NULL)
尽管大多数列都可以为null(这在代码的早期检查过。如果只有一列实际返回0行,它将为所有列返回null(空)。
感谢您提供的所有重要提示/建议/解释。
我已经设法通过使用此查询来使我的代码工作,它可能是一个巨大的黑客或服务器真的很重,但现在它的工作原理。如果有人有任何改进此代码的建议,请留言。
INSERT INTO items
(producttype,
firstcode,
secondcode,
brand,
retailer,
firstsize,
secondsize)
SELECT 3,
IFNULL((SELECT productcodes.id
FROM productcodes
WHERE LOWER(productcodes.code) = LOWER(NULL)), NULL),
IFNULL((SELECT productcodes.id
FROM productcodes
WHERE LOWER(productcodes.code) = LOWER(NULL)), NULL),
IFNULL((SELECT brands.id
FROM brands
WHERE LOWER(brands.name) = LOWER('Canada')), NULL),
IFNULL((SELECT retailers.id
FROM retailers
WHERE LOWER(retailers.name) = LOWER('WE')), NULL),
IFNULL((SELECT sizes.id
FROM sizes
WHERE LOWER(sizes.size) = LOWER('XL')), NULL),
IFNULL((SELECT sizes.id
FROM sizes
WHERE LOWER(sizes.size) = LOWER(NULL)), NULL)