插入MYSQL - 无法插入数据

时间:2015-06-09 12:59:43

标签: mysql forms post insert-into

经过几周试图在MYSQL数据库中的['aaaaa', 'aaaazza', 'anaaazz11a', 'anaaazza'] 变量中插入数据后,我在这里问。我找到了很多form的示例代码,而且我的提供商也检查了我的skript。他说我的INSERT INTO有问题。 我尝试了很多,但是在点击提交后我无法在phpMyAdmin中看到任何数据,但我收到了邮件,工作正常。 也许任何人都可以在我的剧本中看到一个问题。

$sql=

<?php if(isset($_POST["sendcopy"])){ mail($mailToCC, $subject, $textCC, $from); } if(isset($_POST["submit"])){ $host_name = "database.myprovider"; $database = "db_name"; $user_name = "user_name"; $password = "*****************"; $connect = mysqli_connect($host_name, $user_name, $password, $database); if (mysqli_connect_errno()) { echo "KEINE VERBINDUNG MÖGLICH! " . mysqli_connect_error(); } else { echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";} $sql= 'INSERT INTO "offen"("id", "vorname", "nachname", "email", "telefon", "geburtsjahr", "postleitzahl", "datum", "stunde", "minute", "personen", "bereich", "nachricht") VALUES ($id, $vorname, $nachname, $email, $tel, $geburtsjahr, $plz, $datum, $stunde, $minute, $personen, $bereich, $nachricht)'; mysql_close($connect); } include ("reservtrue.php"); exit; ?> 来自"submit"以下。

<form>

我希望使用德语单词作为变量,这在stackoverflow中是没有问题的。

感谢您的帮助。

修改

感谢您的建议。我仍然无法将数据从<form method="post" action="mailer.php" onsubmit="return chkFormular()" name="Formular" id="formTemplate"> <table id="reservtable"> . . . . <input type="submit" name="submit" value="Reservieren" id="submit"> </td> </tr> </table> </form> 插入到MYSQL中。我改变了我的代码。如果我将代码粘贴到phpMyAdmin - SQL中,它就可以了!但是,如果我将我的脚本加载到服务器并在Web中测试我的表单。 这是我的新代码:

form

问题已解决

问题通过以下代码解决:

<?php
error_reporting(E_ALL ^ E_NOTICE);

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

$vorname = $_POST["Vorname"];
$nachname = $_POST["Nachname"];
$email = $_POST["Mailadresse"];
$tel = $_POST["Telefonnummer"];
$geburtsjahr = $_POST["Geburtsjahr"];
$plz = $_POST["PLZ"];
$datum = $_POST["Datum"];
$stunde = $_POST["Stunde"];
$minute = $_POST["Minute"];
$personen = $_POST["Personen"];
$bereich = $_POST["Bereich"];
$nachricht = $_POST["Nachricht"];

$host_name = "database.myprovider";
$database = "db_name";
$user_name = "user_name";
$password = "*****************";

$connect = mysqli_connect($host_name, $user_name, $password, $database);
if (mysqli_connect_errno())
{
    echo "KEINE VERBINDUNG MÖGLICH! " . mysqli_connect_error();
    }
        else
        {
        echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}

$insert = ("INSERT INTO offen(vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht)
VALUES ('".$id."', '".$vorname."', '".$nachname."', '".$email."', '".$tel."', '".$geburtsjahr."', '".$plz."', '".$datum."', '".$stunde."', '".$minute."', '".$personen."', '".$bereich2."', '".$nachricht."')");

mysqli_query($insert, $sql);
}

include ("reservtrue.php");
exit;
?>

谢谢你们的信息,激励和提示!我在过去的两天里学到了很多东西。

4 个答案:

答案 0 :(得分:0)

<html> <head> <script> function setClick(){ var tL = document.querySelectorAll("img[src*='addressbook.gif']"); //Getting all images which src contains addressbook.gif for(var i=0, j=tL.length;i<j; i++){ //Just to visualize tL[i].style.outline = '1px solid red'; //We actually click on the parent (a) and not the img so we set the click on the a tag //The other tags will keep your normal onclick settings. tL[i].parentNode.onclick = function(){ //Put your special script for those cases. //adjustPeoplePicker() //Some version of this. return false } } } </script> </head> <body onload = 'setClick()'> <a href = 'https://www.google.com'><img alt = 'Browse' src = 'https://www.google.com/images/srpr/logo11w.png' /></a> <a href = 'https://www.google.com'><img alt = 'Browse' src = 'https://www.google.com/images/srpr/logo11w.png?test=addressbook.gif' /></a> <a href = 'https://www.google.com'><img alt = 'Browse' src = 'https://www.google.com/images/srpr/logo11w.png' /></a> </body> </html> 在哪里?在mysql_query($sql);之后添加此内容。您的$sql查询需要$sql才能运行它。如果你添加了它仍然不起作用,我建议你去phpmyadmin的sql选项卡。使用一些随机值粘贴您的查询。这就是我检查我的查询是否有效的方法。

答案 1 :(得分:0)

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style type="text/css">
<!--
body {background-color:black; overflow:none;}


-->

@media (min-width:641px) {
    body {
        background:white;background-image:url('http://lib.store.yahoo.net/lib/oberers-flowers/Home-Background-2013a.gif');}
        div.desktop {visibility:hidden;
    }
}
</style>

</head>
<body>

<div class="desktop" style="position:absolute;top:0px;left:0px; z-index:1">
<img border="0" src="http://lib.store.yahoo.net/lib/oberers-flowers/mobile1.jpg" width="100%" height=auto>
<img border="0" src="http://lib.store.yahoo.net/lib/oberers-flowers/mobile2.jpg"  width=100% height=auto>
<img border="0" src="http://lib.store.yahoo.net/lib/oberers-flowers/mobile3.jpg"  width=100% height=auto>
</div> 
</body>
</html>

echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";} $sql= 'INSERT INTO offen (id, vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht) VALUES ('$id', '$vorname', '$nachname', '$email', '$tel', '$geburtsjahr', '$plz', '$datum', '$stunde', '$minute', '$personen', '$bereich', '$nachricht')'; mysqli_query($connect,$sql); //this line was missing from your code. mysqli_close($connect); //updated to make it MySQLi 实际上完成了应用您在mysqli_query($connect,$sql)查询中定义的SQL的工作。

注意

  • 您的脚本中同时包含 MySQLi MySQL 函数,您必须只使用一个函数,所有SQL函数必须是MySQL < em>我

  • 我建议您更改SQL查询以使用单引号和反引号。表名$sql和列名称不需要在引号中。您插入的变量确实需要引号,如我所示。

  • 您(通常)不需要offen,因为一旦PHP到达页面末尾,SQL连接就会自动关闭。

答案 2 :(得分:0)

变量名称不需要引号,但参数不需要引号。您还缺少执行SQL语句的代码。

echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}

$sql= "INSERT INTO offen(id, vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht)
VALUES ($id, '$vorname', '$nachname', '$email', '$tel', '$geburtsjahr', '$plz', '$datum', '$stunde', '$minute', '$personen', '$bereich', '$nachricht')";

if ($connect->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $connect->error;
}

mysql_close($connect);

}

答案 3 :(得分:0)

看来你对$insert中的变量引用有一些可以理解的混淆。您可能对如何处理数据类型有疑问。

以下是需要注意的一些事项

  1. 您的变量周围有太多引​​号。在""中换行查询,但为个别变量保存''(必要时,如下所示)。例如,只需将变量包裹一次,如下所示:.'$vorname'.' if the variable you are inputting is a string. If it is an integer (INT variable type), leave the quotes off, e.g. $ number`。换句话说,输入字符串为字符串,INT为int。
  2. 如果您要输入的变量在数据库中设置为自动增量(即它是主键),您可能根本不想输入它。例如,在您的情况下,$id似乎是一个。如果是这样,则语法向后。只需将其输入NULL或将其从插入中删除,如下所示:insert into tablename (id, vorname) values (NULL, '$vorname')
  3. 如果您要阻止SQL注入(您的代码很可能),您还需要清理所有变量。您可以使用mysqli_real_escape_string()
  4. 执行此操作

    ,而不是通过所有这些,您可以使用预备语句,这将以更清洁的方式处理该信息,但也会保护您的代码免受SQL注入。

    以下是使用mysqli

    执行此操作的方法

    以对象身份连接:

    $connect = new mysqli($host_name, $user_name, $password, $database);
    

    然后将查询提供给对象并绑定参数。在本节中,“s”是一个字符串,“i”是一个整数。

    $insert = $connect->prepare("INSERT INTO offen(id, vorname, nachname, email)
    VALUES (NULL, ?,?,?");
    $insert->bind_param("sss", $vorname, $nachname, $email);
    $insert->execute();
    $insert->close();
    

    如果您正确命名变量,这应该可行。