我在这里有一个项目,下面有很多这种代码。
这是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];
}
}