【问题标题】:Just not sure what I'm doing wrong, been at it a while [closed]只是不确定我做错了什么,已经有一段时间了[关闭]
【发布时间】:2015-05-28 17:34:20
【问题描述】:

我正在尝试学习如何编码,我正在尝试制作一个基本表单以插入我在本地使用 xampp 的 mysql 服务器,我只是不确定我做错了什么。

    <!doctype html>
    <html>
    <head>
    <link rel="stylesheet" href="style.css">
    <meta charset="utf-8">
    <title> My Practice Page </title>
    </head>
    <body>
    <?
    $first_name = '';
    $last_name ='';
    $city ='';
    ?>

    $db = MYSQLI_CONNECT('localhost','root','','practiceforms');
    $sql = "INSERT INTO users (first name, last name, city) VALUES 
        ('$first_name', '$last_name', '$city')";
    mysqli_query($db, $sql);
    mysqli_close($db);
    echo '<p> User added. </p>';

    <form method="post" action="">
    First Name: <input type="text" name="First Name" value="<?php $first_name;?   >" <br>

    Last Name: <input type="text" name="Last Name" value ="<?php $last_name;?>"<br>

    City: <input type ="text" name="city" value=<?php $city; ?>" <br>

    <input type="submit" name="submit" value="submit">


    </body>
    </html>

【问题讨论】:

  • 发生了什么,与您预期的有什么不同?
  • 你有什么问题?有没有错误?
  • 我也有一段时间了,但我认为您不能将变量放在单引号中,即'$city'。我认为它们必须用双引号 "$city" 或完全不加引号。
  • @Jared,它们在双引号内,所以没关系。

标签: php mysql


【解决方案1】:

您发布的代码存在一些问题。

首先,并非所有代码都在 php 标签内。

<?
$first_name = '';
$last_name ='';
$city ='';
?> // THIS LINE SHOULD BE AT THE END OF THIS BLOCK

$db = MYSQLI_CONNECT('localhost','root','','practiceforms');
$sql = "INSERT INTO users (first name, last name, city) VALUES 
    ('$first_name', '$last_name', '$city')";
mysqli_query($db, $sql);
mysqli_close($db);
echo '<p> User added. </p>';

// RIGHT HERE
?>

其次,每次运行此页面时,它都会尝试将内容插入数据库。用

包装代码
if (isset($_POST['submit'])) {
    // all your code goes inside this
    // so it only fires when a users presses submit
    $first_name = ''; // i think you get the picture...
}

第三,你要设定你的价值观。

$first_name = $_POST['first_name'];

注意最后一个。如果出于某种原因,没有提交 first_name 输入(例如,提交表单时页面上可能没有输入),那么当您尝试使用它时,PHP 会对您大喊 $_POST['first_name'] 未设置所以您应该这样做而是这个。

if (isset($_POST['first_name'])) {
    $first_name = $_POST['first_name'];
}
else {
    $first_name = '';
}

【讨论】:

  • if(!empty( $_POST['first_name'])){ $first_name = $_POST['first_name']; } ;-)
  • 我对他很轻松 :),但我还是把它加进去了。
  • 我会投票,但今天没有票了。不过答案很好。
  • 此外,值设置缺少 php 回显(即实际上没有设置任何值)& 对于名字输入字段,php 结束标记中间有一些无效间距....
  • (first name, last name, city) 列名中的空格。 OP的代码有很多错误,足以让任何人头晕目眩。这些应该用刻度线` 包裹起来,或者用下划线连接它们。更不用说一些严重的 SQL 注入了。
猜你喜欢
  • 2019-10-19
  • 2012-11-07
  • 2013-02-08
  • 2018-01-22
  • 2014-02-16
  • 2022-01-06
  • 2014-08-20
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多