MySql插入查询在PHP页面中不起作用
嗨,我是PHP和MySql新手,我面临一个问题: 我有一个页面,允许用户将图像和一些详细信息(如姓名和电子邮件地址)上传到我的数据库中,但我使用的代码不起作用 事实上,它并没有向我的数据库添加数据,而是上传了图像 我还想问,有没有办法强制所有表单字段供用户填写表单 html表单如下所示:MySql插入查询在PHP页面中不起作用,php,mysql,file-upload,insert,Php,Mysql,File Upload,Insert,嗨,我是PHP和MySql新手,我面临一个问题: 我有一个页面,允许用户将图像和一些详细信息(如姓名和电子邮件地址)上传到我的数据库中,但我使用的代码不起作用 事实上,它并没有向我的数据库添加数据,而是上传了图像 我还想问,有没有办法强制所有表单字段供用户填写表单 html表单如下所示: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div id="content"><br><div align="center">
<form enctype="multipart/form-data" action="upload1.php" method="POST">
Your Full Name: <input type="text" name="name" maxlength="40"><br>
Your Image Please: <input type="file" name="photo"><br>
<input type="submit" value="Upload!">
</form>
</div>
</body>
</html>
您必须将“”仅放在varchars中,而不放在int值中,如果数据库中的“{$clicks}”是int,请尝试删除“”
要立即创建必填字段,请在upload1.php脚本中执行以下操作:
session_start();
//connect to db
$errors = array();
//validate name
if (!isset($_POST['name']) || empty($_POST['name'])) {
$errors[] = 'Your name is required.';
}
else {
$name = mysql_real_escape_string(trim($_POST['name']));
}
//validate email
if (!isset($_POST['email']) || empty($_POST['email'])) {
$errors[] = 'Your email is required.';
}
else {
$email = mysql_real_escape_string(trim($_POST['email']));
$regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/';
//change the 128 to your email field length in your db
if (preg_match($regex, $email) && strlen($email) <= 128) {
$email = strtolower($email);
}
else {
$errors[] = 'Your email is not valid.';
}
}
//validate the file upload
if (!isset($_FILES['photo']) || empty($_FILES['photo'])) {
$errors[] = 'Your photo is required.';
}
else if ($_FILES['logo']['name'] == '') {
$errors[] = 'Your photo is required.';
}
else if (!file_exists($_FILES['photo']['tmp_name']) || !is_uploaded_file($_FILES['photo']['tmp_name'])) {
$errors[] = 'The file could not be uploaded, please try again later.';
}
else {
//validate the extention with your function is_img_ext()
if (is_img_ext($_FILES['photo']['name'])) {
$errors[] = 'The file you uploaded is not an image.';
}
//validate image size
if ($_FILES['photo']['size'] > 350000) {
$errors[] = 'The image you uploaded is too large.';
}
//if no errors and the file not exist move it to the target dir
if (empty($errors)) {
//generate a new filename for the image
$random_digit=rand(00000000000000,99999999999999);
$new_file_name = $random_digit.$file_name;
$target = "g/".$new_file_name;
$target = $target . basename( $_FILES['photo']['name']);
if (move_uploaded_file($_FILES['photo']['tmp_name'], $target)) {
echo " The file has been uploaded and renamed to '$target' your information has also been added to the database.<br>To view your image online visit www.facesnap.tk/$target ";
}
else {
echo "Sorry, there was a problem in your upload. Be sure that you follow instructions.";
}
}
}
if(!empty($errors)) {
$_SESSION['form_error'] = $errors;
header('Location: your_form.php');
die();
}
//your rest script
.....
function is_img_ext($filename) {
$ext = explode('.', $filename);
$ext = strtolower(end($ext));
if ($ext == jpeg || $ext == jpg || $ext == png || $ext == gif || $ext == bmp) {
return true;
}
else {
return false;
}
}
session_start();
//连接到数据库
$errors=array();
//验证名称
如果(!isset($_POST['name'])| |为空($_POST['name'])){
$errors[]=“需要您的姓名。”;
}
否则{
$name=mysql\u real\u escape\u字符串(trim($\u POST['name']);
}
//验证电子邮件
如果(!isset($_POST['email'])| |为空($_POST['email'])){
$errors[]=“您的电子邮件是必需的。”;
}
否则{
$email=mysql\u real\u escape\u字符串(trim($u POST['email']);
$regex='/^[[U a-zA-Z0-9-]+(\.[U a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/';
//将128更改为数据库中的电子邮件字段长度
if(预匹配($regex,$email)和斯特伦($email)350000){
$errors[]=“您上载的图像太大。”;
}
//如果没有错误且文件不存在,请将其移动到目标目录
if(空($errors)){
//为图像生成新文件名
$random_digit=rand(00000000000000 9999999999);
$new_file_name=$random_digit.$file_name;
$target=“g/”$new\u文件名;
$target=$target.basename($_文件['photo']['name']);
如果(移动上传的文件($文件['photo']['tmp\u名称'],$target)){
echo“文件已上载并重命名为“$target”,您的信息也已添加到数据库中。
要在线查看您的图像,请访问www.facesnap.tk/$target”;
}
否则{
echo“很抱歉,您的上载有问题。请确保按照说明操作。”;
}
}
}
如果(!empty($errors)){
$\u会话['form\u error']=$errors;
标题('Location:your_form.php');
模具();
}
//您的rest脚本
.....
函数为\u img\u ext($filename){
$ext=explode('.',$filename);
$ext=strtolower(end($ext));
如果($ext==jpeg | |$ext==jpg | | |$ext==png | |$ext==gif | |$ext==bmp){
返回true;
}
否则{
返回false;
}
}
现在在您的_form.php中:
session_start();
if (isset($_SESSION['form_error'])) {
$errors = $_SESSION['form_error'];
unset($_SESSION['form_error']);
}
echo '<ul>';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
//your form here
session_start();
如果(isset($\会话['form\ u error'])){
$errors=$\会话['form\u error'];
取消设置($_会话['form_error']);
}
回声“”;
foreach($errors作为$error){
回显“- ”.$error.
”;
}
回声“
”;
//你的表格在这里
请使用mysqli或pdo。不再支持Mysql。请尝试在SQL语句末尾添加分号,Mysql符合SQL ANSI标准,这意味着所有SQL语句都需要以分号结尾。回显查询时会得到什么结果?当您直接在数据库中运行它时,它是否工作?应该使用mysqli
或POD
<代码>msql功能是一个独立的组件。无论如何,我还是会看一看。如果有足够的评论说PDO会有帮助吗?请,为了世界上所有正确的东西,现在停下来,学习如何使用PDO-这个代码充满了安全问题-如果你使用它,你会被黑客攻击。我相信这会解决问题。你提供的代码对我没有帮助。我想告诉你,我在mysql中还有一行(名为ID),它使用主键、Unique和auto-increment。我想正因为如此,只有我的插入不起作用,你认为我告诉你了什么?我给你的代码只是一个简单的方法来检查用户的输入,如果他没有提交一个正确的表单来输出错误,或者处理他的输入。这里我不包括与数据库的任何交互。关于查询,请尝试这样写:“插入女孩(name
,banner
,clicks
,url
,email
)值(“$name”,“$banner”,“$clicks”,“$url”,“$email”),不要忘记清理输入以防止任何sql注入。另外,如果你打算在任何页面中输出这些信息,那么使用htmlentities()来防止用户在你的站点中插入html和javascript是一个很好的idia。至于ID,你不必设置它,因为它是自动递增的,正如你所说的。
session_start();
if (isset($_SESSION['form_error'])) {
$errors = $_SESSION['form_error'];
unset($_SESSION['form_error']);
}
echo '<ul>';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
//your form here