2016-05-31 2 views
-1

Я пытаюсь вставить данные в свою базу данных, но это не работает, я не получаю ошибок. Я думаю, что что-то не так с моим PHP-кодом, но я пробовал некоторые решения в Интернете, которые работали для некоторых других людей, но не для меня.Вставить в базу данных с помощью php

мой HTML код:

<!Doctype HTML> 

<html> 

<title>Neues Projekt</title> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<meta charset="UTF-8"> 

    <head> 
     <h1>Neues Projekt anlegen</h1> 
    </head> 

    <body> 
<form action="php_skript.php" method="post">  
    <p>Name des Projekts:</p> 
    <input type="text" name="name"> 
    <p>Ort des Projekts:</p> 
    <input type="text" name="ort"> 
    <p>Straße des Projekts:</p> 
    <input type="text" name="strasse"> 
    <p>Projektleiter:</p> 
    <input type="text" name="projektleiter"> 
    <br> 
    <input type="submit" value="Submit"> 
    </form> 
    Bilder hinzufügen: 
    <form method="post" enctype="multipart/form-data"> 
       <input type="file" name="image_data" multiple> 
      </form> 


     </form> 

    </body> 


</html> 

и вот мой код PHP:

<?php 
$user = 'root'; 
$password = 'root'; 
$db = 'projekte_db'; 
$host = 'localhost'; 
$port = 3306; 

$name=mysqli_real_escape_string($mysqli, $_POST['name']); 
$ort=mysqli_real_escape_string($mysqli, $_POST['ort']); 
$strasse=mysqli_real_escape_string($mysqli, $_POST['strasse']); 
$projektleiter=mysqli_real_escape_string($mysqli, $_POST['projektleiter']); 

$mysqli=new mysqli($host, $user, $password, $db); 


if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

$mysqli->query("INSERT INTO Projekt (name,ort,straße,projektleiter) VALUES ('$name','$ort','$strasse','$projektleiter')"); 

$mysqli->close(); 
?> 
+1

ПУБЛИКАЦИИ DB схемы. И должны быть ошибки. Проверьте журналы сервера –

+0

'var_dump()' ваши переменные $ _POST, чтобы убедиться, что они правильно отправлены. – WillardSolutions

+1

straße 5-й символ - это специальный символ или что? –

ответ

1

Ваш $mysqli переменная потребность приходит раньше:

$mysqli=new mysqli($host, $user, $password, $db); //put here 

$name=mysqli_real_escape_string($mysqli, $_POST['name']); 
$ort=mysqli_real_escape_string($mysqli, $_POST['ort']); 
$strasse=mysqli_real_escape_string($mysqli, $_POST['strasse']); 
$projektleiter=mysqli_real_escape_string($mysqli, $_POST['projektleiter']); 

//$mysqli=new mysqli($host, $user, $password, $db); remove here 

Кроме того, я предлагаю вам использовать параметризованные запросы, это более безопасно.

+0

на самом деле теперь это работает, я думаю, проблема была из-за немецкой буквы «ß» в «straße» и что мой $ mysqli не пришел раньше, спасибо вам за этот felippe и @Dr Manish Joshi – Korken55

1

Поскольку вы вставляете данные пытаются использовать подготовленные заявления

$user = 'root'; 
$password = 'root'; 
$db = 'projekte_db'; 
$host = 'localhost'; 

$mysqli = new mysqli($host, $user, $password, $db); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$name=$_POST['name']; 
$ort=$_POST['ort']; 
$strasse=$_POST['strasse']; 
$projektleiter=$_POST['projektleiter']; 

/* create a prepared statement */ 
if ($stmt = $mysqli->prepare("INSERT INTO `Projekt` (`name`,`ort`,`straße`,`projektleiter`) VALUES (?,?,?,?)")) { 

    /* bind parameters for markers */ 
    /* use s for strings, i for integer,d for double, b for blob */ 
    $stmt->bind_param("ssss", $name,$ort,$strasse,$projektleiter); 

    /* execute query */ 
    $stmt->execute(); 

    /* close statement */ 
    $stmt->close(); 
} 
$mysqli->close(); 
+0

спасибо за это! – Korken55

+0

надеюсь, что это помогло @ Korken55 –

+0

, он действительно работал раньше, но я думаю, это решение лучше и, возможно, безопаснее? сделать это. @Peter Darmis – Korken55