cmysql存儲圖片
① Mysql存儲圖片的路徑時「\」被省略了,如:C:\ABC\A.jpg 變成了C:ABCA.jpg ,請問高手如何解決啊
自己把路徑中的\換成\\
即C:\ABC\A.jpg 換成 C:\\ABC\\A.jpg
否則\及其後面的字元 合起來 會被當成轉義符
② mysql+php存儲圖片及顯示
?php
$keyword
=
isset($_get['keyword'])
&&
$_get['keyword']!=''
?
$_get['keyword']
:
'';
$sql
=
'select
id,author,contents
from
contents
where
contents
like"%'.$keyword.'%"
or
author
like
"%'.$keyword.'%"';
$query
=
mysql_query($sql);
$rs=mysql_query($sql);
while($row
=
mysql_fetch_array($query)){};
?
點擊submit
提交form表單,使用$_get獲取到搜索的內容,然後在sql語句中模糊查詢。
不點擊的時候獲取的值為空,顯示的是所有的記錄。這是正常的、
③ Labview如何把數據或圖片存到MySQL里
表格顯示控制項是刷新率比較慢的一類控制項,的確容易造成閃爍,有如下幾個辦法改善閃爍:
a) 如果系統對采樣率要求不高,加一個延時,一般延時300ms或以上時,就不會閃爍了
b) 如果系統無法延時這么長時間,請在前面板的【表格顯示控制項】上單擊右鍵,選第一行【顯示項】,把【垂直滾動條】和【水平滾動條】的勾選去掉,會明顯改善閃爍。
c) 還有一個方法就是加一個CASE結構,把【表格】放在【CASE】裡面,每隔500ms才刷新一次表格。
另一個方法是使用字元串顯示控制項。這個控制項刷新速度非常快,不會有任何閃爍,但是有兩個缺點,第一是需要把字元串預先連接起來,第二是沒有表格線。
下面是附圖:
④ MySQL里存儲圖片的是什麼數據類型
背景
MySQL 一直以來都有 TEXT、BLOB 等類型用來存儲圖片、視頻等大對象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。
假設用 MySQL 來存放電影視頻等信息,一部是 2G,那麼存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對資料庫性能來說,不僅僅是看記錄數量,更主要的還得看佔用磁碟空間大小。空間大了,所有以前的經驗啥的都失效了。
所以一般來說存放這類信息,也就是存儲他們的存放路徑,至於文件本身存放在哪裡,那這就不是資料庫考慮的范疇了。資料庫只關心怎麼來的快,怎麼來的小。
舉例
雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎麼做才行,做到心裡有數。比如下面一張微信圖片,大概 5M 的樣子。
root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_20190711095019.jpg274501 5.4M -rw-r--r-- 1 root root 5.4M Jul 11 07:17 微信圖片_20190711095019.jpg
拷貝 100 份這樣的圖片來測試
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_20190711095019.jpg "$i".jpg;done;
root@ytt:/var/lib/mysql-files# ls
100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.jpg 82.jpg 90.jpg 99.jpg f8.tsv
10.jpg 18.jpg 26.jpg 34.jpg 42.jpg 50.jpg 59.jpg 67.jpg 75.jpg 83.jpg 91.jpg 9.jpg 微信圖片_20190711095019.jpg
1111.jpg 19.jpg 27.jpg 35.jpg 43.jpg 51.jpg 5.jpg 68.jpg 76.jpg 84.jpg 92.jpg f1.tsv
11.jpg 1.jpg 28.jpg 36.jpg 44.jpg 52.jpg 60.jpg 69.jpg 77.jpg 85.jpg 93.jpg f2.tsv
12.jpg 20.jpg 29.jpg 37.jpg 45.jpg 53.jpg 61.jpg 6.jpg 78.jpg 86.jpg 94.jpg f3.tsv
13.jpg 21.jpg 2.jpg 38.jpg 46.jpg 54.jpg 62.jpg 70.jpg 79.jpg 87.jpg 95.jpg f4.tsv
14.jpg 22.jpg 30.jpg 39.jpg 47.jpg 55.jpg 63.jpg 71.jpg 7.jpg 88.jpg 96.jpg f5.tsv
15.jpg 23.jpg 31.jpg 3.jpg 48.jpg 56.jpg 64.jpg 72.jpg 80.jpg 89.jpg 97.jpg f6.tsv
16.jpg 24.jpg 32.jpg 40.jpg 49.jpg 57.jpg 65.jpg 73.jpg 81.jpg 8.jpg 98.jpg f7.tsv
mysql> show create table tt_image1G
*************************** 1. row ***************************
Table: tt_image1
Create Table: CREATE TABLE `tt_image1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image2G
*************************** 1. row ***************************
Table: tt_image2
Create Table: CREATE TABLE `tt_image2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image3G
*************************** 1. row ***************************
Table: tt_image3
Create Table: CREATE TABLE `tt_image3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
tt_image1
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image1(image_file)
values (load_file('/var/lib/mysql-files/$i.jpg'))";done;
tt_image2
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e "insert into ytt.tt_image2(image_file)
values (hex(load_file('/var/lib/mysql-files/$i.jpg')))";done;
tt_image3
root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;
do aa=$aa"insert into ytt.tt_image3(image_file) values
('/var/lib/mysql-files/$i.jpg');";
done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";
- mysql> select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name | count(*) |+-----------+----------+| tt_image1 | 100 || tt_image2 | 100 || tt_image3 | 100 |+-----------+----------+3 rows in set (0.00 sec)
- root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605 80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd
- mysql> select * from tt_image3;+----+----------------------------+| id | image_file |+----+----------------------------+| 1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)
- mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN DECLARE i,cnt INT DEFAULT 0; SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt; WHILE i < cnt DO SET @stmt = CONCAT('select image_file from tt_image1 limit ',i,',1 into mpfile ''/var/lib/mysql-files/image',i,'.jpg'''); PREPARE s1 FROM @stmt; EXECUTE s1; DROP PREPARE s1; SET i = i + 1; END WHILE; END$$mysql> DELIMITER ;mysql> call sp_get_image;
佔用磁碟空間大(這樣會帶來各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)
使用不易
還是推薦用文件路徑來代替實際的文件內容存放
我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來存儲這些圖片信息
我們來給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設置到最大)
檢查下三張表記錄數
看下文件大小,可以看到實際大小排名,LONGTEXT 欄位存儲的最大,LONGBLOB 欄位縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優勢。
那麼怎麼把圖片取出來呢?
tt_image3 肯定是最容易的
tt_image1 直接導出來二進制文件即可,下面我寫了個存儲過程,導出所有圖片。
tt_image2 類似,把 select 語句里 image_file 變為 unhex(image_file) 即可。
總結
這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:
⑤ mysql資料庫的存放位置在哪裡
資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0data。
資料庫的配置文件在C:Program FilesMySQLMySQL Server 5.0my.ini。
在data文件夾里找到不test的資料庫文件夾和自己創建的文件夾是因為test資料庫是空的資料庫,用於測試使用,自己的文件夾需要去mysql資料庫尋找。
mysql資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0mysql。
MySQL是一種開放源代碼的關系型資料庫管理系統(RDBMS),MySQL資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。
下面詳細介紹幾個找不同資料庫用到的命令:
1、選擇你所創建的資料庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
2、:使用SHOW語句找出在伺服器上當前存在什麼資料庫
mysql> SHOW DATABASES;
3、查看現在的資料庫中存在什麼表
mysql> SHOW TABLES;
4、顯示表的結構。
mysql> DESCRIBE MYTABLE;
(5)cmysql存儲圖片擴展閱讀:
mysql資料庫伺服器有三個資料庫:information_schema資料庫,mysql資料庫,test資料庫。
1、nformation_schema資料庫:這個資料庫保存了mysql伺服器所有資料庫的信息。比如資料庫的名、資料庫的表、訪問許可權、資料庫表的數據類型,資料庫索引的信息等等。就是關於這個資料庫的點點滴滴信息都存儲在這個資料庫中。
nformation_schema資料庫是MySQL自帶的,它提供了訪問資料庫元數據的方式。什麼是元數據呢?元數據是關於數據的數據,如資料庫名或表名,列的數據類型,或訪問許可權等。有些時候用於表述該信息的其他術語包括「數據詞典」和「系統目錄」。
在MySQL中,把 information_schema 看作是一個資料庫,確切說是信息資料庫。其中保存著關於MySQL伺服器所維護的所有其他資料庫的信息。
如資料庫名,資料庫的表,表欄的數據類型與訪問權 限等。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,將無法看到與之相關的任何文件。
2、mysql資料庫:這個資料庫中是mysql資料庫中的所有的信息表。
這個是mysql的核心資料庫,類似於sql server中的master表,主要負責存儲資料庫的用戶、許可權設置、關鍵字等mysql自己需要使用的控制和管理信息。不可以刪除,如果對mysql不是很了解,也不要輕易修改這個資料庫裡面的表信息。
3、test資料庫:空的資料庫,用於測試用。
這個是安裝時候創建的一個測試資料庫,和它的名字一樣,是一個完全的空資料庫,沒有任何錶,可以刪除。
⑥ mysql保存圖片路徑
你這思路就有問題,保存圖片最好不要帶路徑,就保存圖片名字就夠了。你能保證項目遷移後你保存的路徑還和實際環境匹配嗎?
⑦ 如何把文件存放在mysql資料庫中
在my.ini文件里可以設定數據文件的存放路徑將其從原來的目錄移動到指定的位置;修改配置文件my.ini,也就是把socket和data的目錄改到你移到的位置
⑧ Mysql 資料庫文件存儲在哪個目錄
mysql資料庫在系統上是以一個文件夾的形式出現的,你創建了ac資料庫,那麼在磁碟上就會出現ac的目錄,而ac資料庫的全局配置則是ac文件夾中的db.opt文件來管理。
mysql的數據文件在datadir下,你在資料庫中執行 show variables like '%datadir%';就會顯示資料庫文件的路徑,你可以找到ac文件夾。
在 MySQL 客戶端鍵入如下命令:
show global variables like "%datadir%"(8)cmysql存儲圖片擴展閱讀
給定mysql_stmt_init()返回的語句句柄,准備字元串查詢指向的SQL語句,並返回狀態值。字元串長度應由"length"參量給出。字元串必須包含1條SQL語句。不應為語句添加終結用分號(';')或g。
通過將問號字元"?"嵌入到SQL字元串的恰當位置,應用程序可包含SQL語句中的一個或多個參數標記符。
標記符僅在SQL語句中的特定位置時才是合法的。例如,它可以在INSERT語句的VALUES()列表中(為行指定列值),或與WHERE子句中某列的比較部分(用以指定比較值)。但是,對於ID(例如表名或列名),不允許使用它們,不允許指定二進制操作符(如等於號"=")的操作數。後一個限制是有必要的,原因在於,無法確定參數類型。
一般而言,參數僅在DML(數據操作語言)語句中才是合法的,在DDL(數據定義語言)語句中不合法。執行語句之前,必須使用mysql_stmt_bind_param(),將參數標記符與應用程序變數綁定在一起。