php - 如何循环mysql_query直到结果?

标签 php mysql

我有一个嵌套产品类别表。我想从字段 custom_inserts_ru 获取数据,如果它为空 - 转到顶部(父类别)并再次检查。

$mycat = 1146;
$result = mysql_query("SELECT categoryID, parent, custom_inserts_ru FROM SC_categories WHERE categoryID=$mycat");
while($row = mysql_fetch_row($result)) {
    if($row[2]==''){
        $mycat = $row[1];
    } else {
        echo "$row[1] <pre>$row[2]</pre>";
    }
}

我尝试了这个,但不起作用(

最佳答案

我会这样做

function get_inserts ($db, $id) {
    $base_sql = "SELECT c.categoryID, 
           c.parent, 
           IFNULL(c.custom_inserts_ru, p.custom_inserts_ru) custom_inserts_ru, 
           p.parent parent_parent
      FROM SC_categories c LEFT JOIN
           SC_categories p ON c.parent = p.categoryID
     WHERE c.categoryID=";

    $inserts = "";
    do {
        $result = mysql_query ($base_sql . $id, $db);
        if (!$result) break;
        $row = mysql_fetch_assoc($result);
        $inserts = $row['custom_inserts_ru'];
        $id = $row['parent_parent'];

    } while (strlen($inserts) == 0 && $id);

    if($result) {
        mysql_free_result ($result);
    }
    return $inserts;
 } 

为了减少对深层类别树的后续查询数量,引入了自连接,它可以在一次选择中从当前类别或其直接父级获取 custom_inserts_ru 的值。

使用它

$mycat = 1146;
$db = mysql_connect(...);
if (!$db) {
    die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('test', $db);
if (!$db_selected) {
    die ('Unable to select database : ' . mysql_error());
}

$inserts = get_inserts($db, $mycat);
echo "custom_inserts_ru for Id $currentID is '$inserts'";
mysql_close($db);

因为 mysql_* 扩展名是 deprecated ,你最好切换到PDOMySQLi并使用prepared statements .

关于php - 如何循环mysql_query直到结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512731/

相关文章:

php - Mysql查询空值不包含在where条件中

mysql - 你能在没有模型的情况下在 Django 中运行一个原始的 MySQL 查询吗?

Mysql 触发器 - 如何仅在特定行上触发

php - 无法在函数 PHP 中获取数组

php - 从日期中提取月份

PHP MYSQL 问题 : Cannot fetch database information using $resultDetails->fetch_assoc

android - 在MySQL中插入序列号时出错

php - fopen 不会在 Ubuntu 服务器上打开文件

PHP - 为单个元素创建多个条件语句

php - 如何在 PHP 中将日期格式化为意大利语?