将图片网址保存到Mysql数据库

时间:2014-09-26 23:09:15

标签: javascript php mysql ajax database

我有一个名为' mysqlproject'包含两个表。我感兴趣的其中一个表是命名标记,并在数据库中声明如下:

CREATE TABLE IF NOT EXISTS `markers` (
`id` int(11) NOT NULL,
`TitleEvent` varchar(60) NOT NULL,
`Description` varchar(80) NOT NULL,
`lat` float(10,6) NOT NULL,
`lng` float(10,6) NOT NULL,
`type` varchar(255) NOT NULL,
`status` varchar(30) NOT NULL,
`EventUserName` varchar(60) NOT NULL,
`PhotosEvent` varchar(255) NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=73 ;

其中一列是PhotosEvent,我想在那里保存照片的网址。所以我通过javascript文件捕获一张照片,我通过ajax将它发送到一个php文件" camera.php"

ajax发送程序是:

$.ajax({
        type: "POST",
        url: "camera.php",
        data: { 
        imgBase64: dataURL
              }
        }).done(function( respond ) {
          // you will get back the temp file name
          // or "Unable to save this image."
          console.log(respond);
        });

所以我发送方法将图像发送到文件" camera.php"。在php文件中,我正在拍摄该图像并将其保存在我的本地服务器中#34;在文件夹" EventImages"。好的,有效.. 但我想在数据库中保存图像的网址" PhotosEvent"仅在活动ID所在的原始位置..

与数据库连接:

$connection = mysql_connect('localhost', 'root', '');
if (!$connection) //Success $Connection with server returns 1
{
die("Database Connection Failed" . mysql_error());
}
else
{
//Connection with server established
}

// Try Connection with mysql Database
$select_db = mysql_select_db('mysqlproject');
if (!$select_db) //Success $Connection with Database returns 1
{
die("Database Selection Failed" . mysql_error());
}
else
{
//Connection with Database established   
}

将图像保存为文件夹为.png(正常工作)并尝试将网址保存到数据库(不要工作):

if ( isset($_POST["imgBase64"]) && !empty($_POST["imgBase64"]) ) {    

define('UPLOAD_DIR', 'EventImages/');

// get the dataURL
$dataURL = $_POST["imgBase64"];  

// the dataURL has a prefix (mimetype+datatype) 
// that we don't want, so strip that prefix off
$parts = explode(',', $dataURL);  
$data = $parts[1];  

// Decode base64 data, resulting in an image
$data = base64_decode($data);  

// create a temporary unique file name
$file = UPLOAD_DIR . uniqid() . '.png';

// write the file to the upload directory
$success = file_put_contents($file, $data);

// return the temp file name (success)
// or return an error message just to frustrate the user (kidding!)
print $success ? $file : 'Unable to save this image.';

 $results = mysql_query("INSERT INTO markers (PhotosEvent) WHERE id ='".$_SESSION['id']."'VALUES('$dataURL')");
   }

我的问题是保存图片网址 - 数据库路径。我怎样才能做到这一点?提前谢谢..

2 个答案:

答案 0 :(得分:1)

发现它!

define('UPLOAD_DIR', 'EventImages/');
$img = $_POST['imgBase64'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);


$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';


$result=mysql_query("SELECT id FROM markers ORDER BY id DESC LIMIT 1");
while ($row = mysql_fetch_array($result)){
$LastInsertID=$row['id'];
}
$results = mysql_query("UPDATE markers SET PhotosEvent='".$file."' WHERE id = '".$LastInsertID."'");    

现在它工作正常..我正在获取表格标记中的最后一个已知id并且我保存存储在数据库中的变量$ file中的图像的URL!我也像以前一样将图像保存到EventImages文件夹中!!

答案 1 :(得分:0)

如果你想进行INSERT,那么你的VALUES就会放错位置。

执行:

$results = mysql_query("INSERT INTO markers (PhotosEvent) VALUES ('$dataURL')...

还要确保已加载session_start();,因为您正在使用会话。

看到问题中的评论后,如果

UPDATE markers SET PhotosEvent = '$dataUrl' WHERE id = $_SESSION['id']

UPDATE markers SET PhotosEvent = '$dataUrl' WHERE id = '".$_SESSION['id']."'

没有用,那可能是原因。

将错误报告添加到文件顶部,这将有助于生产测试。

error_reporting(E_ALL);
ini_set('display_errors', 1);

mysql_error()

使用这些错误报告方法有助于查找代码中发现的错误。