如何检查偏移量是在MYSQL查询中定义的

时间:2014-07-15 10:38:32

标签: php mysql session

如果某些$ _SESSION ['basket']数组键不存在,我将如何克服Notice: Undefined offset:错误?

MYSQL

                  $query = mysql_query("SELECT * from product
                  WHERE product_id IN ('".$_SESSION['basket'][0]['itemid']."',
                  '".$_SESSION['basket'][1]['itemid']."',
                  '".$_SESSION['basket'][2]['itemid']."',
                  '".$_SESSION['basket'][3]['itemid']."',
                  '".$_SESSION['basket'][4]['itemid']."',
                  '".$_SESSION['basket'][5]['itemid']."',
                  '".$_SESSION['basket'][6]['itemid']."',
                  '".$_SESSION['basket'][7]['itemid']."',
                  '".$_SESSION['basket'][8]['itemid']."')");

我可以在mysql_query语句中使用if(isset($ _ SESSION ['basket'] [0] ['itemid'])吗?

['basket']偏移不存在时,会给出通知错误消息。

有人能告诉我在mysql_query语句之前/之内检查这些偏移是否存在的正确方法吗?

由于

2 个答案:

答案 0 :(得分:0)

迭代$_SESSION['basket']数组并动态构建IN列表。

$itemids = array();
foreach ($_SESSION['basket'] as $item) {
    $itemids[] = "'" . $item['itemid'] . "'";
}

$itemids_str = implode(',', $itemids);
$sql = "SELECT * FROM product WHERE product_id IN ($itemids_str)"
mysql_query($sql);

答案 1 :(得分:0)

你可以这样做: 注意: mysql_*已被弃用mysqli_*

  $in = '';

  foreach($_SESSION['basket'] as $item){
       $in .= $item['itemid'] .',';
  }

  if(strlen($in) > 0)
     $in = substr($in, 0, strlen($in)-1);


  $query = mysql_query("SELECT * from product
              WHERE product_id IN ('" . $in ."')");