php:上传文件,同时在数据库中记录路径

问题描述:

我仍然是一个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

使用此代码.......... ...这工作很好....

$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