我的strlen和substr PHP有什么问题

时间:2016-09-20 14:17:58

标签: php

我创建了一个名为product_的会话。 当我点击我的添加到购物车按钮时,我的

$_SESSION['product_' . $_GET['add']] 就像这个产品_171 171 是我拥有的产品的ID。 我打印出我的查询,看看发生了什么,我的item_id没有回应171 它是sendind 17 而非 171 。 我试图改变数字,但它没有用。

这是我的代码。

function cart(){
    global $conn;
    foreach ($_SESSION as $name => $value) {
        if($value > 0){

        if(substr($name, 0, 8 ) == "product_"){
            $length = strlen($name -8);
            $item_id = substr($name, 8 , $length);

    $query = "SELECT * FROM gallery2 WHERE id =".escape_string($item_id)."";
    print_r($name); echo' <strong>this is the name</strong></br>';
    print_r($item_id); echo'  <strong>this is the id without the name -product_</strong></br>';...

这就是我得到的

product_171这是名称

17这是没有名称的产品_产品_ 为什么我没有得到我的完整身份?

2 个答案:

答案 0 :(得分:1)

检查字符串长度的代码段错误:

var functionforscroll = function(id){
    var reqId = "#"+id;
    window.scrollTo(0, $(reqId).offset().top-85);
}

您正在检查if(substr($name, 0, 8 ) == "product_"){ $length = strlen($name -8); $item_id = substr($name, 8 , $length); ... 的strlen,而$name - 8等于$name - 8,其中包含2个字符,因此它总是会得到2个字符。

-8应该超出-8功能:

strlen()

答案 1 :(得分:0)

您可以使用explode来获取ID。

foreach ($_SESSION as $name => $value) {
    $data = explode("_", $name);
    $item_id = $data[1];
    ...