我希望从while循环内部更改查询的其中一个变量,是否可以执行此操作? EG。
$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数组?
由于
答案 0 :(得分:1)
我相信你要做的是通过更改变量来更改正在运行的查询?
当您更改变量时,您已经执行了查询,并且$ data是“完全生成”的。
答案 1 :(得分:0)
查询已执行,即使有效,更改变量也没有区别。当使用mysql_query
执行查询时,它返回的数据就是那样,无论您更改查询中使用的变量多少,它都不会更改。
另外,我不明白为什么你甚至想做那样的事情以及你的目的是什么,如果你能详细说明一下,或许我们可以找到更好的解决你的问题的方法。
答案 2 :(得分:0)
使用mysql_query()时已经执行了查询,mysql_fetch_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);
}
}
每次都要重新运行查询,但这可能不是你想要做的,它可能会陷入循环中。
答案 3 :(得分:0)
没有。查询已执行并返回数组。但我认为这段代码可能会让您感兴趣(非常安全,有效的查询方法):
//创建PDO对象的实例以连接到数据库。 $ db = new PDO('mysql:unix_socket = / tmp / mysql.sock',$ user,$ password);
//使用查询加载到对象?作为占位符。 $ q = $ db-> prepare(“SELECT column1,column2 FROM table1 WHERE column1 =?”);
//为数组中的占位符赋值并执行一次。 $ Q->执行(阵列( '富'));
while($ row = $ q-> fetch()) { if($ row ['column2'] =='original') {$ v =“改变”; $ Q->执行(阵列($ V));打破;} //使用新值执行新查询。 }