我需要将检查信息组合在一个循环中,但遇到错误。单个检查信息就可以了(请参阅以下设置代码)。
首先:这将检查各种检查信息:
- $checkGeneral
-
$checkProduct
foreach($resultCatAdd as &$value) { if($value == "General Information") { $checkGeneral = true; } elseif ($value == "Product Information") { $checkProduct = true; } }
在这里,我调用我需要执行的主 SQL:
$SQL = "SELECT *
FROM einv_asset
WHERE einv_asset_stockrm = '" . $code . "';
";
此编码是检查信息是真还是假(直接到另一个函数)并执行添加函数
$get_einv_asset_stockrm_SQL = base_executeSQL($SQL);
while($General_row = base_fetch_array($get_einv_asset_stockrm_SQL))
if (base_num_rows($get_einv_asset_stockrm_SQL)!= 0)
{
// General Information category
if ($checkGeneral == true) {
if(einv_editStockrm2($General_row['einv_asset_code'],"General"))
{
$addGeneralSQL="INSERT INTO einv_general_information (einv_ginfo_status,einv_ginfo_remark,einv_ginfo_aid)
VALUES ('" . $status . "','" . base_addSlashSQL($remark) . "','" . $General_row['einv_asset_code'] . "')";
//echo $getGeneralSQL;
//Check and execute query
if(!base_executeSQL($addGeneralSQL)) {
$continue = false;
echo $addGeneralSQL;
}else { $continue = true; }
}
}
然后,当检查信息为假时,它将导致第二个函数
函数2:
if($category == "General")
{
$generalSQL = "SELECT * FROM einv_general_information WHERE einv_ginfo_aid = '" . $assetcode . "') ";
$get_einv_asset_stockrm_SQL = base_executeSQL($generalSQL);
$total = base_num_rows($get_einv_asset_stockrm_SQL);
if ($total!= 0)
{
return true;
}
elseif($total== 0)
{
return false;
}
}
上面的代码工作正常,但存在错误,因为我尝试与上述$checkGeneral
一起包含在$checkProduct
(考虑一切都相似,除了一般是更改为产品)
这是我添加的方式:
$get_einv_asset_stockrm_SQL = base_executeSQL($SQL);
while($General_row = base_fetch_array($get_einv_asset_stockrm_SQL))
if (base_num_rows($get_einv_asset_stockrm_SQL)!= 0)
{
// General Information category
if ($checkGeneral == true) {
if(einv_editStockrm2($General_row['einv_asset_code'],"General"))
{
$addGeneralSQL="INSERT INTO einv_general_information (einv_ginfo_status,einv_ginfo_remark,einv_ginfo_aid)
VALUES ('" . $status . "','" . base_addSlashSQL($remark) . "','" . $General_row['einv_asset_code'] . "')";
//echo $getGeneralSQL;
//Check and execute query
if(!base_executeSQL($addGeneralSQL)) {
$continue = false;
echo $addGeneralSQL;
}else { $continue = true; }
}
}
$get_einv_asset_stockrm_SQL = base_executeSQL($SQL);
while($Product_row = base_fetch_array($get_einv_asset_stockrm_SQL))
if (base_num_rows($get_einv_asset_stockrm_SQL)!= 0)
if ($checkProduct == true) {
if(einv_editStockrm2($Product_row['einv_asset_code'],"Product"))
{
$addProductSQL="INSERT INTO einv_product_information (einv_pinfo_pn,einv_pinfo_serial,einv_pinfo_desc,einv_pinfo_itemcat,einv_pinfo_aid)
VALUES ('" . $partno . "','" . $serial . "','" . base_addSlashSQL($desc) . "','" . $itemcatID . "','" . $Product_row['einv_asset_code'] . "')";
if(!base_executeSQL($addProductSQL)){
$continue = false;
echo $addProductSQL;
}else { $continue = true; }
}
}
在函数 2 中:
if($category == "General")
{
$generalSQL = "SELECT * FROM einv_general_information WHERE einv_ginfo_aid = '" . $assetcode . "') ";
$get_einv_asset_stockrm_SQL = base_executeSQL($generalSQL);
$total = base_num_rows($get_einv_asset_stockrm_SQL);
if ($total!= 0)
{
return true;
}
elseif($total== 0)
{
return false;
}
}
if($category == "Product")
{
$productSQL ="SELECT * FROM einv_product_information WHERE einv_pinfo_aid = '" . $assetcode . "') ";
$get_einv_asset_stockrm_SQL = base_executeSQL($productSQL);
$total = base_num_rows($get_einv_asset_stockrm_SQL);
if ($total!= 0)
{
return true;
}
elseif($total== 0)
{
return false;
}
}
如何修改我的代码以允许这两个检查起作用?
我不完全理解你的解释。我仍然认为我有理由回答。
步骤:
- 创建
Switch Case
,而不是条件if-else
,以检查条件为真。 - 根据您的需要执行功能。
我认为,这个问题的简单和最好的解决方案从开关案例开始。