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 ;
感谢那些谁就会花时间帮我
答
使用此代码.......... ...这工作很好....
$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();
你有什么错误吗?你可以在这里复制吗?你是否试图打印插入语句并在phpmyadmin上执行它? – ClaudioM
在插入中用''替换为''以获得auto_increment值。此外,如果在执行任何sql语句以确认它们是否被正确执行并且看到实际的错误消息(如果它们不是这样)后执行了sql异常处理,它也不会受到影响。 – Shadow
以及谢谢,我没有错误陈述,并使用单身我没有设法把一个setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);在PDO对象上,它似乎是由于我的$文本,几个字符不被接受,我使用$ text =“
”;有没有更好的方法来接受任何类型的角色? – kyoun