2016-01-21 88 views
0

我仍然是一個PHP的初學者,我在這個特定的問題上有一個問題,我檢查了一些舊帖子,但沒有找到我需要。php:上傳文件,同時在數據庫中記錄路徑

所以這段代碼應該連接到數據庫,從窗體上傳一個文件,創建一個較小的文件副本(一張圖片),然後在窗體和數據庫中記錄一些信息新創建的圖片。 一切工作正常,直到記錄,變量可以通過print_r的待觀察,但不會記錄......

代碼:

if(isset($_POST['submit_newprojet'])){ 

$bdd = Connection::getInstance('localhost', 'website', 'utf8', 'root', ''); 
$man = new Admin_manager($bdd); 
$titre = $_POST['nom_projet']; 
$date_proj = $_POST['date_projet']; 
$text = "<pre>".htmlentities($_POST['presentation'])."</pre>"; 
$name = $_FILES['photo']['name']; 

//create destination folder 
$titre_dossier = str_replace(" ","_",$titre); 
$dir_proj = "../projets/".$titre_dossier; 
if(!is_dir($dir_proj)) 
    @mkdir("$dir_proj", 0777, true); 
$dir_proj_orig = "../projets/$titre_dossier/original/"; 
if(!is_dir($dir_proj_orig)) 
    @mkdir("$dir_proj_orig", 0777, true); 

//uploading picture 
$nom_orig = $dir_proj_orig.$name; 
$envoi = move_uploaded_file($_FILES['photo']['tmp_name'], $nom_orig); 
if($envoi){ 

//creating a gd library based smaller copy of picture 
    $photo = $man->createBlock($nom_orig, $titre); 
    //this one works as well, I let it there in case its presence in itself would be my problem, the new picture goes in $dir_proj 

//recording database 
    $photo_dir = substr($dir_proj,3)."/"; 
    $req= $bdd->exec("INSERT INTO projet VALUES ('', '$titre', '$date_proj', '$text', '$photo_dir')");}} 

這裏是關注表,如果需要(我使用VARCHAR的日期,因爲我只保留一年):

CREATE TABLE IF NOT EXISTS `projet` (`id_projet` int(11) NOT NULL AUTO_INCREMENT,`nom_projet` varchar(255) COLLATE utf8_bin NOT NULL,`date_projet` varchar(20) COLLATE utf8_bin NOT NULL,`presentation` text COLLATE utf8_bin NOT NULL,`photo_presentation` varchar(255) COLLATE utf8_bin NOT NULL,PRIMARY KEY (`id_projet`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ; 

感謝那些誰就會花時間幫我

+0

你有什麼錯誤嗎?你可以在這裏複製嗎?你是否試圖打印插入語句並在phpmyadmin上執行它? – ClaudioM

+0

在插入中用''替換爲''以獲得auto_increment值。此外,如果在執行任何sql語句以確認它們是否被正確執行並且看到實際的錯誤消息(如果它們不是這樣)後執行了sql異常處理,它也不會受到影響。 – Shadow

+0

以及謝謝,我沒有錯誤陳述,並使用單身我沒有設法把一個setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);在PDO對象上,它似乎是由於我的$文本,幾個字符不被接受,我使用$ text =「

".htmlentities($_POST['presentation'])."
」;有沒有更好的方法來接受任何類型的角色? – kyoun

回答

-1

使用此代碼.......... ...這工作很好....

$servername = "localhost"; 
$username = "root"; 
$password = "infiniti"; 
$dbname = "mywok"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$titre = 'xxx'; 
$date_proj = '2015-09-12'; 
$text='your content'; 
$photo_dir = '.../dir/dir'; 
$sql = "INSERT INTO projet VALUES ('', '$titre', '$date_proj', '$text', '$photo_dir')"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
+0

爲什麼OP應該切換到mysqli?根據配置設置(no_auto_value_on_zero),傳遞空字符串以生成下一個自動增量值可能不起作用。 – Shadow

+0

感謝您的幫助,因爲我sais我的問題是在$文本的語法,正在法國我有很多的口音在這裏和那裏,因此,htmlentities,但它不適用於MySQL,所以如果任何人有一個建議。 – kyoun

相關問題