我尝试使用PDO将记录插入到表中,但它总是返回错误错误:数组( => 42S21 1 => 1060 2 =>重复列名'‘)
有时插入得很完美。我不明白为什么会这样。
$data=array(
':business_title' =>$title ,
':business_cover' => $cover,
':business_logo' => $logo,
':business_location'=>$location,
':business_address' =>$address,
':business_contact' =>$phone ,
':business_email' =>$email ,
':business_url' =>$website ,
':business_category' =>$category ,
':business_subcategory' =>$subcategory ,
':business_keywords' =>$keywords ,
':business_full_desc' => $summary,
':business_amenities' => $amenities,
':business_socialurl' => $socialurl,
':business_token' => $token,
':user_id' => $userid
);
$query = "
INSERT INTO tablename
(business_title,business_cover,business_logo,business_location,business_address,business_contact,business_email,business_url,business_category,business_subcategory,business_keywords,business_full_desc,business_amenities, business_socialurl,business_token, user_id)
SELECT * FROM (SELECT :business_title,:business_cover,:business_logo,:business_location,:business_address,:business_contact,:business_email,:business_url,:business_category,:business_subcategory,:business_keywords,:business_full_desc,:business_amenities, :business_socialurl,:business_token, :user_id) AS tmp
WHERE NOT EXISTS (
SELECT user_id FROM tablename WHERE user_id = :user_id
) LIMIT 1
";发布于 2021-03-03 23:47:30
当您在输入数据中得到重复的值时,您的问题就会发生。当您SELECT一组常量值时,MySQL会自动生成与这些值匹配的列名。例如:
SELECT 'a', 'b', 'c'得出的结果:
a b c
---------
a b c现在如果你
SELECT 'a', 'b', 'b'你会得到
a b b
---------
a b b因此,如果您随后尝试
SELECT * FROM (SELECT 'a', 'b', 'b') AS tmp;您将得到一个重复的列错误,因为子查询的结果集中有两个名为b的列。
您可以通过提供值列别名来解决这一问题,例如:
SELECT * FROM (SELECT 'a' AS a, 'b' AS b, 'b' AS c) AS tmp;输出:
a b c
a b b请注意,尚不清楚您是否需要所拥有的查询的复杂性,您应该能够简单地:
INSERT INTO tablename (business_title,business_cover,business_logo,business_location,business_address,business_contact,business_email,business_url,business_category,business_subcategory,business_keywords,business_full_desc,business_amenities, business_socialurl,business_token, user_id)
SELECT :business_title,:business_cover,:business_logo,:business_location,:business_address,:business_contact,:business_email,:business_url,:business_category,:business_subcategory,:business_keywords,:business_full_desc,:business_amenities, :business_socialurl,:business_token, :user_id
WHERE NOT EXISTS (
SELECT * FROM tablename WHERE user_id = :user_id
)例如,参见这个演示。
https://stackoverflow.com/questions/66462683
复制相似问题