Php 如何在查询中包含if(isset)

Php 如何在查询中包含if(isset),php,session,notice,Php,Session,Notice,这段代码给出了提示:未定义索引:placeno1 我知道它可以通过使用if(isset())来修复,但我不知道如何将其放在$query行的正确位置 尝试了很多,但都做不好 <?php $query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1"); while($row = mysql_fetch_object($query)){ ?>

这段代码给出了提示:未定义索引:placeno1

我知道它可以通过使用if(isset())来修复,但我不知道如何将其放在$query行的正确位置

尝试了很多,但都做不好

<?php 
$query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
while($row = mysql_fetch_object($query)){
?>
使用三元运算符:

 $query = mysql_query("SELECT `id` FROM `place` 
      WHERE `placeno` = '".isset($_SESSION['placeno'.$i])?$_SESSION['placeno'.$i]:""."' 
      LIMIT 1");
  while($row = mysql_fetch_object($query)){

…以及清理和mysqli_uu.函数:p

未定义的索引是一个数组通知。因此可能的通知源是
'placeno'。$i
。您需要在每个循环中检查它

我假设您正在使用
for()
循环来循环此代码。这就是
$I
的来源

<?php 
if (isset($_SESSION['placeno'.$i])) {
    $query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
    while($row = mysql_fetch_object($query)){
    }
}
?>

但是如果不设置查询,查询会是什么?PSA:mysql*
函数是。不建议编写新代码,因为它会阻止您将来升级。相反,请使用或和。警告:您的代码易受SQL注入攻击。现在它已更改,仍然易受攻击?请再次阅读问题。
$i
甚至还没有定义,那么,这将如何工作呢?而且,OP似乎知道
isset()
——我想问题是——如何修复错误,而不是如何使用isset()隐藏错误:)好吧,如果执行到了那一点,而$i没有定义,我们就没有其他办法了,因为整个程序都错了。但为了避免出现警告,这是一个有效的选择。尽管如此,我认为它对isset($\u SESSION['placeno'.$I])更有意义。
$I
被设置并不意味着
$\u SESSION['placeno'.$I]
也被设置。我保持原样,因为这是唯一对我有意义的方式。如果(isset($\u SESSION['placeno'.$I]){在查询成为解决方案之前是的,第一个选项就是解决方案。Thnx!
<?php 
if (isset($_SESSION['placeno'.$i])) {
    $query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
    while($row = mysql_fetch_object($query)){
    }
}
?>
<?php 
if (!isset($_SESSION['placeno'.$i])) {
    break;
}
$query = mysql_query("SELECT `id` FROM `place` WHERE `placeno` = '".$_SESSION['placeno'.$i]."' LIMIT 1");
while($row = mysql_fetch_object($query)){
?>