Mysql to mysqli or PDO


Mysql to mysqli or PDO

我在这里有一个项目,下面有很多这种代码。

这是mysql的一切,我想改变做mysqli或PDO。

问题是代码使表的字段在循环内成为变量。所以,如果我需要改变一些不同的东西,我将不得不重写数千行代码。因为在下面的循环中,我将更改var的每次调用。例如:用$row["product_name"]代替$product_name

这是代码:

$query = "SELECT product_name, product_price from products";
$result = mysql_query($query_sql);
while($row = mysql_fetch_array($result)) {
    $j = mysql_num_fields($query);
       for($i=0;$i<$j;$i++) {
            $k = mysql_field_name($query,$i);
            $$k = $row[$k];
        }
 //Here, inside the loop, I use $product_name instead of $row["product_name"]

}

它有一种方法来改变代码做同样的mysql或PDO?我想继续使用$field_name而不是$row["field_name"]

mysqli对象方法所示。我不建议这样做,但这是可以做到的。我会强烈建议您学习如何直接处理结果对象或数组。像这样动态设置变量会带来很多不必要的开销。

$result = $mysqli->query($query_sql);
while($row = $mysqli->fetch_assoc($result)) {
    extract($row);
    //Here, inside the loop, I use $product_name instead of $row["product_name"]
}

这是你要找的:http://www.doctrine-project.org/

我特别不喜欢这个特定的项目,因为它往往是缓慢的大数据量,但提供了你需要的:

指定域类(理解将数据库行映射到php对象),如果与类变量名不匹配,只需指定表列的确切名称。

你为每一种对象类型设置每一列你在你的代码中使用那个定义,你对对象发出请求,它有一个映射到数据库。

$entitiy_manager->getReference('myobject', $objectid = 1);创建一个新对象只是添加一个类的新实例。

如果我没理解错的话,这应该是你要找的。

谢谢你的每一个答案和意见,但是我刚刚找到我问题的解决方案。

我将离开这里,以备将来参考。

这个代码在mysql中:

$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
    $j = mysql_num_fields($query);
    for($i=0;$i<$j;$i++) {
        $k = mysql_field_name($query,$i);
        $$k = $row[$k];
    }
}

在mysqli:

中也是如此
$result = mysqli_query($link, $query);
while($row = $query->fetch_assoc())
{
    $j = mysqli_num_fields($query);
    for($i=0;$i<$j;$i++) {
        $k =  mysqli_fetch_field_direct($query, $i)->name;
        $$k = $row[$k];
     }

}