如果某些$ _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语句之前/之内检查这些偏移是否存在的正确方法吗?
由于
答案 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 ."')");