我有一个非常bizzare的情况,我无法弄清楚发生了什么事情。“fetch_assoc”值随if语句,PHP变化而变化?
我有以下代码:
$conn->query("UPDATE teachers SET active=1 WHERE id=".$next_teacher_id);
$list_of_arr=$conn->query("SELECT * FROM teachers WHERE id>=".$next_teacher_id);
$k = $list_of_arr->fetch_assoc();
$choice_array=unserialize($k['arr']);
foreach ($choice_array as $j) {
$matched_query=$conn->query("SELECT * FROM students WHERE taken_by='' AND name LIKE '%".$j."%'");
$matched_row=$matched_query->fetch_assoc();
if (isset($matched_row['id'])) {
$qu="UPDATE students SET taken_by='".$k['name']."' WHERE id=".$matched_row['id'];
echo($qu);
$conn->query($qu);
break;
}
$k=$list_of_arr->fetch_assoc();
}
这将呼应UPDATE students SET taken_by='' WHERE id=19
但是,如果我不是改线(无其他任何变动):
if (isset($matched_row['id']))
要:
if (isset($k['name']))
我现在得到的回声:
UPDATE students SET taken_by='John Smith' WHERE id=
作为对照实验,如果我说:
if(true)
我得到的输出:
UPDATE students SET taken_by='John Smith' WHERE id=
于是两种不同的方式我做它实际切换我的输出,我不能让这两个在查询变量。这里到底发生了什么?任何帮助是极大的赞赏。
写您的地方在此格式'WHERE ID ='的条件那 –
只是给了我这个“‘$ next_teacher_id。’‘:'UPDATE学生树立taken_by =’约翰史密斯” WHERE ID =‘’'作为输出。不知为什么,其中一个价值观变得无效。但我不明白这两个变量是如何相互影响的。 – rb612
但您正在用错误的语法编写查询。 –