programing

sql 구문의 php- 오류

projobs 2022. 9. 15. 23:08
반응형

sql 구문의 php- 오류

데이터베이스의 테이블 중 하나에 양식 데이터를 삽입하려고 합니다.삽입되는 데이터는 이름, 이메일, 현재 날짜 및 사용자의 관심사입니다.여기 암호가 있습니다.

if (isset($_POST['name'])) {
   $name = $_POST['name'];
   $email = $_POST['email'];
   $intrests = $_POST['intrests'];
   $default_intrests = array("mob","pcs","scm","oth");
   $interests = "";
   if (count($intrests) == 0) {
      $interests = implode(",", $default_intrests);
   }
   else {
          $interests = implode(",", $intrests);
   }

   $sqll="insert into subscriptions (name,email,subdate,intrests) values ($name,$email,CURRENT_DATE, $interests)";
   $insert = mysqli_query($link, $sqll);
   if (!$insert) {
      echo mysqli_error($link);
   }
}

폼 송신시에, 다음의 에러가 표시됩니다.

SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 1행의 'dsa,asdf@qwer.com,CURRENT_DATE,mob' 근처에서 사용할 올바른 구문을 확인하십시오.

더하다'그 가치로 환산할 수 있는 것도 있습니다.string

 $sqll="insert into subscriptions (name,email,subdate,intrests)
     values ('$name','$email',CURRENT_DATE, '$interests')";

실제로 파라미터를 SQL에 직접 쓰는 것은 좋지 않습니다.SQL 주입을 피하고 prepared-statement를 사용하는 것이 좋습니다.

mysql_query("insert into table values('data1', 'data2' )");
    // User Entered fields
    // *** This is dangerous, it is subject to sql injection, 
    $query = "insert into subscriptions(name,email,subdate,intrests)
             values ('$name','$email',CURRENT_DATE, '$interests')";

    $result = mysqli_query( $link, $query);

    // *** Error checking, what if !$result? eg query is broken

    $row = mysqli_fetch_array($result);

    if(!$row){

        echo "No Row inserted";
    }
    else {
       echo "OK";
    }

PHP 변수를 사용하는 경우 mysqli_query()를 사용하지 말고 항상 다음과 같은 준비된 문장을 사용해야 합니다.

$stmt = $mysqli->prepare("insert into subscriptions name,email,subdate,intrests)
                             values (?,?,CURRENT_DATE, ?)");
$stmt->bind_param('sss', $class);
$stmt->execute();
$data = $stmt->get_result()->fetch_all();

현재 날짜를 변수에 저장해 보십시오.

이와 같은 것

if (isset($_POST['name'])) {
            $name=$_POST['name'];
            $email=$_POST['email'];
            $intrests=$_POST['intrests'];
            $CURRENT_DATE = date("Y-m-d");
            $default_intrests=array("mob","pcs","scm","oth");
            $interests="";
            if(count($intrests)==0){
                $interests= implode(",", $default_intrests);
            }else{
                $interests= implode(",", $intrests);
            }

            $sqll="insert into subscriptions (name,email,subdate,intrests) values ('$name','$email','CURRENT_DATE', '$interests')";
            $insert= mysqli_query($link, $sqll);
            if (!$insert) {
                echo mysqli_error($link);
            }
        }
}

언급URL : https://stackoverflow.com/questions/51238608/php-error-in-sql-syntax

반응형