-3
$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");
}

製品フィードとデータベースから製造元の部品番号を照合して、メイン ソースからセカンダリ ソースへの在庫切れ製品を作成しようとしています。それは動作しません。私が間違っていることは何ですか?

これは、状況をより明確に説明するために編集されています。まず、これはアプリに入り、そのアプリで使用されるスニピットです。したがって、mysqli ではなく mysql です。最初のクエリの変数 $mpn は、$mpn = ($P[0]); から取得されます。頂点で。これはフィードにあり、列としてデータベースにはありません。2 番目のクエリの $sku は、最初のクエリの結果から得られたものであり、列としてデータベースにありません。アプリは、フィードの各行に対してこのコードをループします。

上記は、最後の引数を提供するという望ましい効果を達成できませんでしたが、それが確実に必要であることがわかっています(私はそれを設定しました)。新しい説明を考えると、誰かが助けることができますか?

$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");
}
4

2 に答える 2

1

mysql_queryを使用して(代わりにmysqliを調べて)後でデータを取得する必要がありますmysql_fetch_array。割り当てをフェッチした後$row1 = mysql_fetch_array($id);、行と列の name を呼び出すことができます$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

于 2012-09-16T07:27:04.577 に答える
0

ここ:

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

私はそれが次のようになるべきだと思います:

$sku = mysql_query("SELECT productcode FROM my_table WHERE productid = '$id' ");
于 2012-09-16T07:26:46.433 に答える