Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql插入查询在PHP页面中不起作用_Php_Mysql_File Upload_Insert - Fatal编程技术网

MySql插入查询在PHP页面中不起作用

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-

嗨,我是PHP和MySql新手,我面临一个问题:

我有一个页面,允许用户将图像和一些详细信息(如姓名和电子邮件地址)上传到我的数据库中,但我使用的代码不起作用

事实上,它并没有向我的数据库添加数据,而是上传了图像

我还想问,有没有办法强制所有表单字段供用户填写表单

html表单如下所示:

<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