gpt4 book ai didi

php - 导入制表符分隔的文本以更新远程机器上的 MySQL 表

转载 作者:行者123 更新时间:2023-11-30 22:31:51 24 4
gpt4 key购买 nike

问题出在 UPDATE 行。我得到的错误说错误:不是唯一的表/别名:'tmpStock'我以前从未使用过 INNER JOIN。

$link = mysql_connect('host', 'log', 'pwd');
If (!$link) { die ('Could not connect: ' . mysql_error()); }
@mysql_select_db('admin_sandbox') or die ('Unable to select database');

$result = mysql_query("CREATE TEMPORARY TABLE tmpStock
(pid int(10), cid int(10), manufacturer_id int(10), is_visible enum('Yes',
'No'), product_type varchar(50), is_dollar_days enum('Yes',
'No'), product_id varchar(64), is_doba enum('Yes', 'No'),is_locked
enum('Yes', 'No'),
inventory_control enum('Yes', 'AttrRuleExc') ) ENGINE=MyISAM DEFAULT
CHARSET=latin1 ");

$result = mysql_query("LOAD DATA LOCAL INFILE 'sampleproducts.txt' INTO
TABLE tmpStock FIELDS TERMINATED BY '\t' ENCLOSED BY '\"' LINES TERMINATED
BY '\n'")or die ('Error: '.mysql_error ());

$result = mysql_query("UPDATE tmpStock INNER JOIN products ON
tmpStock.product_id = products.product_id SET
products.stock = tmpStock.stock WHERE tmpStock.product_id =
products.product_id") or die ('Error: '.mysql_error ());

最佳答案

您在 UPDATE 查询中列出了两个表,然后在 tmpStock 上进行了内部联接,因此在查询中复制了 tmpStock。您可以使用自联接,但它们需要一个别名。但这里完全是多余的。

在 MySQL 中,使用 INNER JOIN 就像在 SELECT 语句中一样,只有 FROM 子句被替换为 UPDATE 放在开头,SET 放在表连接之后,最后是 WHERE 子句:

"UPDATE tmpStock 
INNER JOIN products ON tmpStock.product_id = products.product_id
SET products.stock = tmpStock.stock;"

此外,我反转了 SET 表达式。由于临时表在用户 session 后被销毁,因此您不会在任何一个表中看到更改。您很可能想更新 products 表中的 stock 字段。

关于php - 导入制表符分隔的文本以更新远程机器上的 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com