【发布时间】:2015-01-18 03:57:57
【问题描述】:
我只是想将表单数据发送到 SQL 数据库。
dbconnect.php 具有配置选项,并且确实有效,因为我能够在其他页面上检索我的表。
当我按下提交时,我可以将信息“回显”到表格/div 中,无论我是自己做 PHP,还是将其提交到另一个页面,即。添加事件.php
但是,我似乎无法弄清楚将其发送到 SQL 数据库时我做错了什么。现在,不幸的是,我已经为此做了无数小时,所以我的代码可能有点混乱,我可能正在使用不同形式的 sql、pdo 等。此时我的头脑爆炸了哈哈。
任何人,这是代码 - 第一个是表单页面,即。 form.php,第二个是表单调用的addevent.php。
<?php include 'header.php'?>
<?php include 'dbconnect.php'?>
<form id="addevent" action="addevent.php" method="post">
<fieldset>
<legend>Add an Event</legend>
<label for="showtitle">Title of Show</label>
<input type="text" id="showtitle" name="showtitle" value=""></br>
<label for="h">Headliner</label>
<input type="text" id="h" name="h" value="">
</br>
<label for="fone">First Feature Act Name</label>
<input type="text" id="fone" name="fone" value="">
</br>
<label for="ftwo">Second Feature Act Name</label>
<input type="text" id="ftwo" name="ftwo" value="">
</br>
<label for="fthree">Third Feature Act Name</label>
<input type="text" id="fthree" name="fthree" value="">
</br>
<label for="host">Host Name</label>
<input type="text" id="host" name="host" value="">
</br>
<label for="aone">First Additional Performer Name</label>
<input type="text" id="aone" name="aone" value="">
</br>
<label for="atwo">Second Additional Performer Name</label>
<input type="text" id="atwo" name="atwo" value="">
</br>
<label for="athree">Third Additional Performer Name</label>
<input type="text" id="athree" name="athree" value="">
</br>
<label for="afour">Fourth Additional Performer Name</label>
<input type="text" id="afour" name="afour" value="">
</br>
<label for="stimeu">Event Start Time</label>
<input type="time" id="stimeu" name="stimeu" value="">
<input type="text" id="stimef" name="stimef" class="nodisplay" value="No Fill"></br>
<label for="etimeu">Event End Time</label>
<input type="time" id="etimeu" name="etimeu" value="">
<input type="text" id="etimef" name="etimef" class="nodisplay" value="No Fill"></br>
<label for="dateu">Event Date</label>
<input type="date" id="dateu" name="dateu" value="">
<input type="text" id="datef" name="datef" class="nodisplay" value="No Fill"></br>
<label for="loadd">Address</label>
<input type="text" id="loadd" name="loadd" value="">
<label for="locity">City</label>
<input type="text" id="locity" name="locity" value="">
<label for="loprov">Prov</label>
<input type="text" id="loprov" name="loprov" value=""></br>
<input type="text" id="lourl" name="lourl"value=""></br>
<label for="price">Price</label>
<input type="text" id="price" name="price" value="">
<label for="turl">Buy Tickets URL</label>
<input type="text" id="turl" name="turl" value=""></br>
<label for="pname">Promoter Name</label>
<input type="text" id="pname" name="pname" value=""></br>
<label for="purl">Promoter URL</label>
<input type="text" id="purl" name="purl" value="">
<label for="ptel">Promoter Telephone</label>
<input type="tel" id="ptel" name="ptel" value="">
<label for="pemail">Promoter email</label>
<input type="email" id="pemail" name="pemail" value=""></br>
<input type="submit" id="submit" value="Add Event">
</fieldset>
</form>
</div>
<?php include 'footer.php'?>
<?php include 'dbconnect.php'?>
<?php
if(isset($_POST['showtitle'], $_POST['h'], $_POST['fone'], $_POST['ftwo'], $_POST['fthree'], $_POST['aone'], $_POST['atwo'], $_POST['athree'], $_POST['afour'], $_POST['stimeu'], $_POST['stimef'], $_POST['etimeu'], $_POST['etimef'], $_POST['dateu'], $_POST['datef'], $_POST['loadd'], $_POST['locity'], $_POST['loprov'], $_POST['lourl'], $_POST['price'], $_POST['turl'], $_POST['pname'], $_POST['purl'], $_POST['ptel'], $_POST['pemail']))
$sql="INSERT INTO may (id, showtitle, headline, fone, ftwo, fthree, aone, atwo, athree, afour, stimeu, stimef, etimeu, etimef, dateu, datef, loadd, locity, loprov, lourl, price, turl, pname, purl, ptel, pemail, addedstamp)
VALUES ('$showtitle','$h','$fone','$ftwo','$fthree','$aone','$atwo','$athree','$afour','$stimeu','$stimef','$etimeu','$dateu','$datef','$loadd','$locity','$loprov','$lourl','$price','$turl','$pname','$purl','$ptel','$pemail')";
$result = $conn->query($sql);
}
if(!mysql_query($sql,$conn)){
die('Error: ' . mysql_error());
}
echo("<br>Input data is a success");
$mysql_close($conn)
?>
<h1>Form Data</h1>
<?php echo $_POST['showtitle']; ?><br>
<?php echo $_POST['h']; ?><br>
<?php echo $_POST['fone']; ?><br>
<?php echo $_POST['ftwo']; ?><br>
<?php echo $_POST['fthree']; ?><br>
<?php echo $_POST['host']; ?><br>
<?php echo $_POST['aone']; ?><br>
<?php echo $_POST['atwo']; ?><br>
<?php echo $_POST['athree']; ?><br>
<?php echo $_POST['afour']; ?><br>
<?php echo $_POST['stimeu']; ?><br>
<?php echo $_POST['stimef']; ?><br>
<?php echo $_POST['etimeu']; ?><br>
<?php echo $_POST['etimef']; ?><br>
<?php echo $_POST['dateu']; ?><br>
<?php echo $_POST['datef']; ?><br>
<?php echo $_POST['loadd']; ?><br>
<?php echo $_POST['locity']; ?><br>
<?php echo $_POST['loprov']; ?><br>
<?php echo $_POST['lourl']; ?><br>
<?php echo $_POST['turl']; ?><br>
<?php echo $_POST['pname']; ?><br>
<?php echo $_POST['purl']; ?><br>
<?php echo $_POST['ptel']; ?><br>
<?php echo $_POST['pemail']; ?><br>
编辑:我的大脑处于半关闭状态,所以我忘记了一些相关信息:
我得到的主要错误是: 注意:未定义变量:第 12 行 C:...\addevent.php 中的 showtitle 对于每个变量/名称/您想调用的任何内容。
我从其他人的帖子和答案中尝试了多种方法,但由于某种原因,我无法让插入 sql 工作。我可以很好地检索,很好地回声,只需插入我遇到的重大问题。如果有人甚至可以向我展示我应该使用的代码的基本格式/基本结构/语法......或者指出我正确的方向,那就太棒了。网上的很多东西都已经过时了,使用的是旧的 api,或者只是其中包含大量 SQL 注入的小教程,我发现很难在互联网上找到 UP TO DATE 教程为了这。
这是在我的“.php”页面上为我工作的语法,我在其中检索表行。 (效果很好)。
$sql = "SELECT id, featuref, featurel, hostf, hostl, openf, openl, midf, midl, otherf, otherl, additionalf, additionall, time, datec, location, locationurl, price, ticketurl, showname FROM january ORDER by date ASC, time ASC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo 'Show';
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<table class='col-lg-12' id='event-container_'><th><h1 class='event-title-words'>
". $row["showname"]. "</h1>
</th>
}
echo "Done";
} else {
echo "0 results";
}
$conn->close();
这里有一个缩短的版本,如果有人想编辑,可以更轻松地进行编辑,或者向我展示可能的正确方法。
<?php include 'dbconnect.php'?>
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
<?php
if(isset($_POST['showtitle']))
$sql="INSERT INTO may (id, showtitle, addedstamp)
VALUES ('$showtitle')";
$result = $conn->query($sql);
}
if(!mysql_query($sql,$conn)){
die('Error: ' . mysql_error());
}
echo("<br>Input data is a success");
$conn->close();
?>
<h1>Form Data</h1>
<?php echo $_POST['showtitle']; ?><br>
php include dbconnect.php 下一行就是dbconnect.php 文件中的内容,不包括servername、username、db info ...
dbconnect 确实有效。只是把信息放在那里是为了帮助,因为我的代码太乱了。
ID 用于自增,添加的时间戳应该只是表单提交到数据库时的时间戳。
<?php include 'dbconnect.php'?>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$showtitle = $_POST['showtitle'];
$h = $_POST['h'];
$fone = $_POST['fone'];
$ftwo = $_POST['ftwo'];
$fthree = $_POST['fthree'];
$aone = $_POST['aone'];
$atwo = $_POST['atwo'];
$athree = $_POST['athree'];
$afour = $_POST['afour'];
$stimeu = $_POST['stimeu'];
$stimef = $_POST['stimef'];
$etimeu = $_POST['etimeu'];
$etimef = $_POST['etimef'];
$dateu = $_POST['dateu'];
$datef = $_POST['datef'];
$loadd = $_POST['loadd'];
$locity = $_POST['locity'];
$loprov = $_POST['loprov'];
$lourl = $_POST['lourl'];
$price = $_POST['price'];
$turl = $_POST['turl'];
$pname = $_POST['pname'];
$purl = $_POST['purl'];
$ptel = $_POST['ptel'];
$pemail = $_POST['pemail'];
if(isset($_POST['showtitle'], $_POST['h'], $_POST['fone'], $_POST['ftwo'], $_POST['fthree'], $_POST['aone'], $_POST['atwo'], $_POST['athree'], $_POST['afour'], $_POST['stimeu'], $_POST['stimef'], $_POST['etimeu'], $_POST['etimef'], $_POST['dateu'], $_POST['datef'], $_POST['loadd'], $_POST['locity'], $_POST['loprov'], $_POST['lourl'], $_POST['price'], $_POST['turl'], $_POST['pname'], $_POST['purl'], $_POST['ptel'], $_POST['pemail']))
{
$sql="INSERT INTO may (showtitle, h, fone, ftwo, fthree, aone, atwo, athree, afour, stimeu, stimef, etimeu, etimef, dateu, datef, loadd, locity, loprov, lourl, price, turl, pname, purl, ptel, pemail)
VALUES ('$showtitle','$h','$fone','$ftwo','$fthree','$aone','$atwo','$athree','$afour','$stimeu','$stimef','$etimeu','$etimef,'$dateu','$datef','$loadd','$locity','$loprov','$lourl','$price','$turl','$pname','$purl','$ptel','$pemail')";
$result = $conn->query($sql);
}
if($result){
echo "Success";
}
else {
trigger_error("there was an error....".$conn->error, E_USER_WARNING);
}
$conn->close()
?>
而我现在的错误是 警告:出现错误....您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '2015-12-06'、'12-06-2015'、'123 Middle Road'、'London'、'ON'、'@987654321 附近使用的正确语法@' 在 C:\xampp\htdocs\comedyscene\addevent.php 第 48 行的第 2 行
【问题讨论】:
-
您是否遇到任何类型的错误?请告诉我们。
-
我的印象是您的数据库连接是
mysqli_,在您的查询$result = $conn->query($sql);中使用面向对象的方法 - 而mysql_不支持此方法。我认为您正在混合 MySQL API,它们不会相互混合。例如if(!mysql_query($sql,$conn)){,理论上你会查询两次。所以你需要向我们展示你是如何连接的,使用哪个 MySQL API。 -
另外,您的列和值似乎不匹配。另一件事,你只是检查
if(isset($_POST['showtitle']...,但没有分配任何东西。这里有太多事情要做。 -
列和值不匹配是什么意思? h 和标题?很好,我解决了这个问题,但结果相同。
-
再次查看(重新加载)我的 cmets,尤其是第一个和第二个关于您只检查而不分配任何内容的内容。然后你在
INSERT INTO may (id,中有id我在你的值中看不到任何匹配“id”的东西。然后这个$mysql_close($conn)什么都不做。
标签: php sql forms sql-insert