PHP:在while循环期间更改查询变量
我希望在while循环中更改查询的一个变量,可以这样做吗?例如PHP:在while循环期间更改查询变量,php,mysql,variables,loops,while-loop,Php,Mysql,Variables,Loops,While Loop,我希望在while循环中更改查询的一个变量,可以这样做吗?例如 $query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'.$variable.'";', $conn); while ($data = mysql_fetch_assoc($query)) { if($data['column2'] == 'original') { $variable = 'altered';
$query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'.$variable.'";', $conn);
while ($data = mysql_fetch_assoc($query)) {
if($data['column2'] == 'original') {
$variable = 'altered';
}
}
我只是想在执行while语句之前看看这是否可行,或者$data数组是否已经完全生成
感谢查询已经执行,即使有效,更改变量也不会有任何区别。当使用
mysql\u query
执行查询时,它返回的数据就是这样,无论您对查询中使用的变量做了多少更改,它都不会更改
我也不明白你为什么要做这样的事情,你的目的是什么,如果你能详细说明一下,也许我们可以找到一个更好的解决方案。我相信你想做的是通过改变变量来改变你正在运行的查询
当您更改变量时,您已经执行了查询,并且正如您所说,$数据已经“完全生成”。当您使用mysql\u query()时,已经执行了查询,mysql\u fetch\u assoc()只解释返回的数据。所以没有 从理论上讲,你可以做以下几点:
$query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'. $variable.'";', $conn);
while ($data = mysql_fetch_assoc($query)) {
if($data['column2'] == 'original') {
$variable = 'altered';
// Run the query with the new $variable value.
$query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'. $variable.'";', $conn);
}
}
如果每次都重新运行查询,但这可能不是您真正想要执行的操作,它可能会陷入循环。否。查询已执行,返回数组已生成。但我认为这段代码可能会让您感兴趣(非常安全、高效的查询方法): //创建PDO对象的实例以连接到数据库。 $db=newpdo($mysql:unix_socket=/tmp/mysql.sock',$user,$password) //使用将查询加载到对象中?作为占位符。 $q=$db->prepare(“从表1中选择column1,column2,其中column1=?” //为数组中的占位符指定一个值并执行一次。 $q->execute(数组('foo')) 而($row=$q->fetch()) { 如果($row['column2']=='original') {$v=“已更改”;$q->执行(数组($v));中断;} //使用新值执行新查询。 }