PHP sql没有显示结果

时间:2016-08-01 10:14:48

标签: php mysql

我有2个输入框,' person.tag_name'和' person.created_by',我发布了#39; person'从.js到.php。

现在的问题是它需要只输出两个输入框才会显示数据,但是在我的sql语句中我只匹配createdBy而且tag_name根本没用。

总结:

  • 如果2个输入框中只有1个被部署,我将不会收到数据。
  • 只有在输入2/2输入框时才会收到数据。
  • 尝试删除$tagName = $request->tag_name;并返回数据

php代码:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);    
$createdBy = $request->created_by;
$tagName = $request->tag_name;

if (!empty($createdBy) && !empty($tagName)){
    $Where = "created_by LIKE '%$createdBy%' AND name LIKE '%$tagName%'";
}    
else if (!empty($createdBy)){
     $Where = "created_by LIKE '%$createdBy%'";
}    
else if (!empty($createdBy)){
     $Where = "name LIKE '%$tagName%'";
}



// Create connection
$con = new mysqli($servername, $username, $password, $db);

// Check connection
 if ($con->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM test.test_tag WHERE deleted_by is null AND $Where;" ;

$qry = $con ->query($sql);

$data = array();

if ($qry->num_rows > 0) {
    // output data of each row
    while($row = $qry->fetch_object()) {
        $data[] = $row;
    }
} else {
    $data[] = null;
}

$con->close();

请协助。

3 个答案:

答案 0 :(得分:0)

数据接收是指数据库,如果

请检查您的查询

$sql = "SELECT * 
        FROM piwik.piwik_tag 
        WHERE deleted_by is null 
          AND created_by LIKE '%$createdBy%';";

它只有created_by,查询中没有tag_name。

所以这里说它只需要created_by来从数据库中获取数据

答案 1 :(得分:0)

我已经找到了一种方法来解决这个问题,方法是在为$request->tag_name分配$tagName之前包括检查if (!empty($request->created_by)){ $createdBy = $request->created_by; } if (!empty($request->tag_name)){ $tagName = $request->tag_name; } 的条件是否存在。

但是,我不知道为什么没有这个条件,数据将无法检索,因为我检查代码仍然会继续运行带有正确语句的sql。

var tempPath = req.files.image.path;
          var ext = path.extname(req.files.image.name).toLowerCase();
          var targetPath = path.resolve('./profile_img/' + user_id + ext);
        //  var targetPath = path.resolve('D:/Alex/Project/img/' + user_id + ext);
        if (ext === '.png' || ext === '.jpg' || ext === '.jpeg' || ext === '.gif')
          {
                        var inStr = fs.createReadStream(tempPath);
                            var outStr = fs.createWriteStream(targetPath);
                            inStr.pipe(outStr);

                            //save profile image to database
                            connection.query('update users set img_path=? where id=?',[targetPath,user_id],
                            function(err,imagesave){
                            if(!err)
                            {

                                    console.log('Profile Picture Uploaded ..');
                                    res.json({'code':200,'status':'Success','message':'Profile Picture Uploaded ..'});
                                    return;
                            }
                            else
                            {
                                    console.log('can not update ..',err);
                                    res.json({'code':200,'status':'Success','message':err});
                                    return;
                            }
                        });
        }
          else
          {
                        console.log('File type must be image',err);
                        res.json(500, {error: 'Only image files are allowed.'});

          }
        }

感谢您的所有回复。

答案 2 :(得分:-2)

name是MYSQL关键字,不应将其用作列名。

如果你尽力将它包装成像这样的反复使用

`name` LIKE '%$tagName%'