Php 在MySQL数据库中存储图像文件的路径

Php 在MySQL数据库中存储图像文件的路径,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我正在使用Codeigniter构建一个应用程序,并试图在MySQL数据库中手动存储一个图像文件的路径。这些图像存储在一个名为crests的文件夹中,该文件夹位于应用程序的根级别 我正在使用以下代码将图像插入数据库,但它抛出了一个错误1064 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

我正在使用Codeigniter构建一个应用程序,并试图在MySQL数据库中手动存储一个图像文件的路径。这些图像存储在一个名为crests的文件夹中,该文件夹位于应用程序的根级别

我正在使用以下代码将图像插入数据库,但它抛出了一个错误1064

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

/*
File:        crests.sql
Description: Used for creating the objects and loading data into the teams schema
Created:     February 11, 2014
Version:     1.0
Advice:      Save this file onto your hardrive and use the following command(no  semicolon) to run it from the 

command prompt
           SOURCE C:\xampp\htdocs\myApplication\sql_scripts\teams.sql  
*/

SELECT '<starting bars script>' AS '';

SELECT '<my_teams_ database>' AS '';

INSERT INTO teams (team_name, team_logo) VALUES('Antrim', '<img src="<?php echo    site_url('../logo/antrim.png'); ?>" 

alt="...">');


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
我在MySQL命令行客户端中遇到错误

ERROR 1064 <4200> you have an error in your SQL syntax; check the manual that corresponds to your MySQL server for the right syntax to use near '../logo/antrim.png'); ?>" alt="...">'); at line 1
我不确定这是一个语法错误,还是与使用反斜杠转义引号有关。我也不确定这是否是在Codeigniter中存储图像路径的正确方法。我在这里和其他论坛上搜索过,但找不到答案。任何帮助都将不胜感激

我正在使用MVC来存储、操作和显示这些数据

团队模式

<?php  
class Team_model extends CI_Model {  

public function __construct()
{
  parent::__construct();
}

function team() 

    {  
        //Query the team table for every record and row  

        $team_results = array();
        $this->db->select('team_name, team_logo');
        $this->db->from('team');

        $query = $this->db->get();

        if($query->num_rows() > 0) 
        {
         $team_results = $query->result();
        }

        return $team_results;   

    }  

}
/*End of file team_model.php*/
/*Location .application/models/team_model.php*/ 
?> 
在视图中


返回团队名称没有问题,但图像没有显示-相反,我得到了一个断开的图像链接。

您需要转义单引号或使用双引号:

INSERT INTO team (team_name, team_logo) VALUES('Antrim',
      '<img src="<?php echo site_url(\'../crests/antrim.png\'); ?>"  alt="...">');
或:


顺便说一句,如果可以避免的话,我不会存储这样的图像路径,我不知道您将如何使用它。。。;您需要评估稍后从数据库中获取的字符串,以处理php。

此行insert语句中使用的引号有问题:

INSERT INTO team (team_name, team_logo) VALUES('Antrim', '<img src="<?php echo    site_url('../crests/antrim.png'); ?>"
第一个值是Antrim,下一个值是,下一个单引号终止该值。在此之后,MySQL需要一个逗号

转义预期值内的引号。

您的问题在于:

INSERT INTO team (team_name, team_logo) VALUES('Antrim', '<img src="<?php echo       site_url('../crests/antrim.png'); ?>" 
并处理代码中的任何PHP或HTML

我真的不建议这样做,但如果您只是想让它工作,您可以将查询更改为:

INSERT INTO team (team_name, team_logo) VALUES('Antrim', '<img src="<?php echo site_url(\'../crests/antrim.png\'); ?>"  alt="...">');

这就是我通常存储图片路径名的方式,例如:images/uploads/[picname].[picext]

因此,这将是:

insert values ('Antrim', 'images/uploads/example.jpg') 

我发现保存路径名更容易,你可以通过html处理img标记。

你是插入值还是从sql文件导入?我使用sql文件和MySQL命令行客户端导入,我使用Codeigniter中的site_url,这对我来说是一个新框架。我试图手动将GAA团队的徽标插入数据库,并使用控制器和模型提取它们-这些对我来说没有问题。将escape\添加到我的代码中可以将路径插入数据库,但当我将数据提取到视图中时,名称会出现,但图像不会显示-我得到的是alt。当您在浏览器中检查图像元素时,图像元素的src属性的值是多少?感谢您对我的问题的初始回答,你能把代码贴在你使用这些数据的地方吗?根据site_url的文档,你需要去掉前导点:site_url'/crests/antrim.png'将指向http://yoursite.com/crests/antrim.pngThanks 谢谢你回答我的问题。escape\可以工作,但当我提取并在视图中显示team_徽标的值时,图像不会显示。我得到了一个断开的图像链接-这就像链接不起作用一样,但是如果我将链接直接复制并粘贴到视图中,图像显示没有问题。感谢您回答我的问题。当我插入到数据库中时,这会起作用并消除错误。当我将图像提取到视图中时,我现在在显示图像时遇到了问题。@emcevoy我可以想象,你最好存储一个真实的路径,而不是需要解析的php。你是对的,我现在存储路径如下插入到团队名称中,团队徽标值为“Antrim”,“../../crests/Antrim.png”;在数据库中,我将其显示在我的html中,如下所示:echo'team_logo'>'。。;我用了这个,它成功了。感谢您的帮助,当您将其提取出来时,您如何处理它?我接受了您的建议,并将路径存储为以下内容插入到团队名称、团队徽标值“Antrim”、“../../crests/Antrim.png”;在数据库中,我将其显示在我的html中,如下所示:echo'team_logo'>'。。;我用了这个,它成功了
INSERT INTO team (team_name, team_logo_url, team_logo_altText) VALUES('Antrim', '../crests/antrim.png', '...') 
INSERT INTO team (team_name, team_logo) VALUES('Antrim', '<img src="<?php echo site_url(\'../crests/antrim.png\'); ?>"  alt="...">');
insert values ('Antrim', 'images/uploads/example.jpg')