sql语句中的逻辑

时间:2015-03-07 05:12:41

标签: php mysql sql

connect1($db_host,$db_username,$db_password,$db_name1);

$q="SELECT DISTINCT
bizinfo.dbiz_id,
bizinfo.company_name,
bizinfo.company_industry,
bizinfo.company_sub_industry
FROM
bizinfo
Inner Join biz_feedback ON bizinfo.dbiz_id = biz_feedback.biz_id AND biz_feedback.on_industry = bizinfo.company_industry
ORDER BY
bizinfo.dbiz_id ASC";
$rs_q=mysql_query($q);
while($row=mysql_fetch_assoc($rs_q))
{
$dbiz_id=$row['dbiz_id'];
$company=$row['company_name'];
$company_industry=$row['company_industry'];
$company_sub_industry=$row['company_sub_industry'];

connect2($db_host,$db_username,$db_password,$db_name2);

$sql_livedb=mysql_query("UPDATE bizinfo set bizinfo.company_industry='$company_industry', bizinfo.company_sub_industry='$company_sub_industry'
WHERE bizinfo.dbiz_id='$dbiz_id'");
}

运行此代码时,company_industrycompany_sub_industry列中的所有行都会填充相同的数据(对于第一个biz_id)。

某个地方需要加入,但我认为我已将其覆盖在WHERE bizinfo.dbiz_id='$dbiz_id'

1 个答案:

答案 0 :(得分:0)

你的问题是什么并不是很明显,但我猜想其中一个变量(可能是$company_sub_industry)中有一个值,其中嵌入了单引号,因此导致WHERE子句被忽略。

更改代码以删除更新语句,然后转储值以便检查它们。也许在mysql_query之后/之后进行一些错误检查会有所帮助。

如果这是原因,真正的解决方案是不通过连接字符串和变量来生成SQL。研究“php避免SQL注入”以获取更多信息。

相关问题