2017-02-06 12 views
-1

私はこのコードを実行して自分のデータベースにデータを挿入しようと何回も試みました。私が何を試しても問題を理解することはできません。 PHPは次のよ​​うになります。フォームデータをmysqlデータベースに挿入する

<?php 
// Create connection 
$conn = mysqli_connect("localhost","nmhsmusi_admin" , "********", "nmhsmusi_musicdb"); 

// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

if (isset($_POST['submit'])) 
{ 

    $titleTag = $_POST['title']; 
    $composerTag = $_POST['composer']; 
    $unicodeTag = $_POST['unicode']; 
    $tempoTag = $_POST['tempo']; 
    $yearTag = $_POST['year-used']; 
    $languageTag = $_POST['language']; 
    $keyTag = $_POST['key-signature']; 
    $pianoTag = $_POST['piano']; 
    $temposelTag = $_POST['temposel']; 
    $partsTag = $_POST['parts']; 

    $run = mysqli_query($conn,"INSERT INTO musicdb (title, composer, unicode, temptxt, yearused, languages, pianokeys, piano, temposel, parts) 
     VALUES 
     (
      '$titleTag', '$composerTag', '$unicodeTag', '$tempoTag', '$yearTag', '$languageTag', '$keyTag', '$pianoTag', '$temposelTag', '$partsTag' 
     )"); 

    if ($run) { 
     echo "New record created successfully"; 
    } else { 
     echo "failed"; 
    } 
    mysqli_close($conn); 
} 
?> 

すべてのヘルプは大幅に

+1

エラーをチェックする方法はいくつかありますが、それらを使用する必要があります。フォームはこのbtwには欠けています。 –

答えて

0

あなたはmysqliのを使用しない理由を理解されるでしょうか?それはすでに使用されていませんか? PDOが使用されました。ここで

は例です:もちろん

<?php 
if (isset($_POST['submit'])) { 

    $titleTag = $_POST['title']; 
    $composerTag = $_POST['composer']; 
    $unicodeTag = $_POST['unicode']; 
    $tempoTag = $_POST['tempo']; 
    $yearTag = $_POST['year-used']; 
    $languageTag = $_POST['language']; 
    $keyTag = $_POST['key-signature']; 
    $pianoTag = $_POST['piano']; 
    $temposelTag = $_POST['temposel']; 
    $partsTag = $_POST['parts']; 

    try { 
     $pdo = new PDO(DSN,DBUSER,DBUSERPASSWD); 
    } catch (PDOException $e) { 
     echo "Failed to connect to Database: " . $e->getMessage() . "\n"; die(); 
    } 
    $pdo->exec("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); 

    $sql = "INSERT INTO musicdb (title, composer, unicode, temptxt, yearused, languages, pianokeys, piano, temposel, parts) 
    VALUES (:titleTag,:composerTag,:unicodeTag,:tempoTag,:yearTag,:languageTag,:keyTag,:pianoTag,:temposelTag,:partsTag)"; 
    $query = $pdo->prepare("$sql"); 
    $query->bindValue(':titleTag',$titleTag); 
    $query->bindValue(':composerTag',$composerTag); 
    $query->bindValue(':unicodeTag',$unicodeTag); 
    $query->bindValue(':tempoTag',$tempoTag); 
    $query->bindValue(':yearTag',$yearTag); 
    $query->bindValue(':languageTag',$languageTag); 
    $query->bindValue(':keyTag',$keyTag); 
    $query->bindValue(':pianoTag',$pianoTag); 
    $query->bindValue(':temposelTag',$temposelTag); 
    $query->bindValue(':partsTag',$partsTag); 
    $query->execute(); 
    if($query->rowCount() > 0){ 
     echo "New record created successfully!"; 
    } else { 
     echo "Error!"; 
    } 
} 
?> 

あなたは正規表現を使用してフォームから来ているすべてのものをフィルタリングする必要があります。簡単なやり方!正規表現は、あなたが悪意のあるコードを回避するためにhtmlentitiesにすべてを変換するために必要なすべてを解析したら

正規表現「/([-ZA-ÿ0-9\ S] +)/ I」以下を

<?php 
preg_match('/([a-zÀ-ÿ0-9\s]+)/i', $_POST['any_field_form'], $output); 
if((isset($output[1]) == true) and ($output[1] != null)) { 
    //Convert everything to htmlentities to avoid malicious code 
    $get_the_data = htmlentities($output[1], ENT_QUOTES, 'UTF-8', false); 
} else { 
    $get_the_data = null; 
} 
?> 

これにより、フォームに問題が発生しないようにすることができます。もちろん、各フォームフィールドについては、特定の正規表現を行う必要があります。しかしそれはあなたのコードをよりスマートにします。

ご迷惑をおかけして申し訳ございません。私は英語で読む方法を知っていますが、書く方法はわかりませんので、私はそのために翻訳者を使いました。 しかし、それは、少年です!

関連する問題