查询不能完成我想要它做的事情

时间:2012-09-16 07:00:25

标签: php mysql

$mpn = $P[0];
$qty = $P[14];
$mysql_connection = mysql_connect('localhost', 'my_db', 'my_pass');
if (!$mysql_connection) {
    die('Could not connect to db: ' . mysql_error());
}
mysql_select_db('my_db', $mysql_connection);
$id = mysql_query("SELECT productid FROM my_table_2 WHERE value = '$mpn'");
if (!$id) { 
    return("XXX-99999");
}
mysql_select_db('my_db', $mysql_connection);
$sku = mysql_query("SELECT productcode FROM my_table WHERE productid = $id");
if (!$sku) { 
    return("XXX-99999");
}
mysql_select_db('my_db', $mysql_connection);
$qty2 = mysql_query("SELECT avail FROM my_table WHERE productcode = '$sku'");
if (!$qty2) { 
    return("XXX-99999");
}
if ($qty2 <1 && $qty >0 && $qty2 != $qty) { 
    return($sku);
}
else {
    return("XXX-99999");
}

我正在尝试匹配产品Feed和数据库中的制造商部件号,以完成从主要来源到次要来源的库存产品。这是行不通的。我做错了什么?

这已经过编辑,试图更清楚地解释情况。首先,这是一个应用程序,是该应用程序使用的snippit。因此mysql而不是mysqli。第一个查询中的变量$ mpn来自$ mpn =($ P [0]);在顶部。它位于Feed中,而不是数据库中的列。第二个查询中的$ sku来自第一个查询的结果,并且不作为列在数据库中。该应用程序为Feed的每一行循环此代码。

即使我确实知道它(我设置了),上面也无法达到提供最后一个参数的预期效果。鉴于新的解释可以有人帮忙吗?

$mpn = ($P[0]);
$qty = ($P[14]);

$mysql_connection = mysql_connect('localhost', 'user', 'pass' );
if (!$mysql_connection) {
die('Could not connect to db: ' . mysql_error());
}

mysql_select_db('db', $mysql_connection);

$tmp1 = mysql_query("SELECT productcode FROM table1 WHERE mpn != '' && mpn = '$mpn'")or die(mysql_error());
$row1 = mysql_fetch_array($tmp1, MYSQL_BOTH);
$sku = $row1[0];

$tmp2 = mysql_query("SELECT avail FROM table1 WHERE productcode = '$sku'")or die(mysql_error());
$row2 = mysql_fetch_array($tmp2, MYSQL_NUM);
$qty2 = $row2[0];

if ($qty2 <=0 && $qty >0) { 
return($sku);
}
else {
return("XXX-99999");
}

2 个答案:

答案 0 :(得分:1)

您必须使用mysql_querymysql_fetch_array之后获取数据(改为查看mysqli)。获取分配$row1 = mysql_fetch_array($id);后,您可以调用行名和列名$row1['productid'];。您也不需要在每次调用之前打开分配数据库。您只能在运行查询之前执行一次,然后运行mysql_close($mysql_connection)

$mpn = $P[0];
$qty = $P[14];
$mysql_connection = mysql_connect('localhost', 'my_db', 'my_pass');
if (!$mysql_connection) {
die('Could not connect to db: ' . mysql_error());
}

mysql_select_db('my_db', $mysql_connection);    

$id = mysql_query("SELECT productid FROM my_table_2 WHERE value = '$mpn'");
$row1 = mysql_fetch_array($id);
if (!$id) { return("XXX-99999");
}

$sku = mysql_query("SELECT productcode FROM my_table WHERE productid = $row1['productid']");
$row2 = mysql_fetch_array($sku);
if (!$sku) { return("XXX-99999");
}

$qty2 = mysql_query("SELECT avail FROM my_table WHERE productcode = '$row2['productcode']'");
$row3 = mysql_fetch_array($qty2);
if (!$qty2) { return("XXX-99999");
}
if ($row3['avail'] <1 && $qty >0 && $row3['avail'] != $qty) { return($row['productcode']);
}
else {return("XXX-99999");
}
mysql_close($mysql_connection);

这应该给你一个或多或少的想法。用作参考:http://www.php.net/manual/en/function.mysql-connect.php

答案 1 :(得分:0)

下面:

$sku = mysql_query("SELECT productcode FROM my_table WHERE productid = $id");

我认为应该是这样的:

$sku = mysql_query("SELECT productcode FROM my_table WHERE productid = '$id' ");