PHP学习-需要帮助保存到mysqli

时间:2019-02-11 07:26:21

标签: php mysqli phpmyadmin

我一直在学习phpmyadmin,这是我目前的学习/测试 下面的环境。
我今天创建了第一个数据库,我称之为db1,它是简单的结构 只有三个输入字段。

和phpmyadmin中的一个主要ID。
还有一个唯一的用户名结构字段。

index.html:

<html>
  <head>
    <title>db1 test</title>
  </head>
  <body>
    <form id="myForm" action="userInfo.php" method="post">
      Username: <input type="text" name="username" /><br />
      Name: <input type="text" name="name" /><br />
      Favourite Number: <input type="text" name="favouritenumber" /><br />
      <button id="sub">Save</button>
    </form>

    <span id="result"></span>

    <script src="/script/jquery-1.8.1.min.js" type="text/javascript"></script>
    <script src="/script/my_script.js" type="text/javascript"></script>
  </body>
</html>

db.php:

<?php    
    $host = "localhost";
    $port = "8889";
    $servername = "$host:$port";
    $username = "forest";
    $password = "";
    $db = "db1";
    // Create connection
    $conn = new mysqli_connect($servername, $username, $password, $db);
    // Check connection
    if ($conn - > connect_error) {
        die("Connection failed: ".$conn - > connect_error);
    }
?>

info.php:

<?php
    include_once "/includes/db1.php";    
    $username = $_POST['username'];
    $name = $_POST['name'];
    $favouritenumber = $_POST['favouritenumber'];
    if(mysqli_query("INSERT INTO user(username,name,favouritenumber) VALUES ('$username', '$name', '$favouritenumber')"))
        echo "Successfully Inserted";
        //echo "<a href='login_success.php'>Back to main page</a>";

    else {
        echo "ERROR not entered";
    }
    // close connection
    mysqli_close();
?>

我认为我的问题可能很容易解决,因为它可以正常工作然后停止 当我改变某些东西时工作吗?

我不确定为什么突然无法保存结构字段吗?

我尝试过的事情:
我尝试从第三个名为db3的服务器重新开始,但这显示了与db2相同的insertion failed错误。
而且我还尝试阅读this thread

Possilbe为什么不提交到mysql数据库的原因:

我应该添加的内容 =>在将用户名设置为唯一的结构之前,它已经可以正常工作了,并且如果要添加此主ID字段,我也在strucutre中添加了“ ai主ID”也对info.php,即使它不是由用户添加并由phpmyadmin自动添加的,还是不需要提交上述字段,因为我认为phpmyadmin在提交到达mysql之后添加了“ uuid ai”?

2 个答案:

答案 0 :(得分:0)

1)

如果要与localhost连接,通常也不需要端口引用。

$servername = "localhost";
new mysqli_connect($servername, $username, $password, $db);

端口引用8889不是MySQL的常规localhost端口3306。

2)

您应该将空格与对象引用程序- >隔开:

if ($conn -> connect_error) 

或更通常地

if ($conn->connect_error) 

3)

您正在使用if(mysqli_query(来执行插入操作,该插入操作是 PROCEDURAL ,而您的连接设置是$conn,该插入操作是面向对象的

这些是不同的东西,它们没有任何关系。面向对象是更可取的,因此您应该始终使用它。 Please refer to the manual

因此改写为:

if(conn->query("Your queryString")){... 

4)

阅读您的PHP Error Log file

5)

切勿信任任何用户数据。 永远。您的代码容易受到SQL Injection attack的攻击。<​​/ p>

6)

更好,使用准备好的语句-Here's how


更多笔记

答案 1 :(得分:0)

尝试一下:

<?php
include_once "/includes/db1.php";    
$username = $_POST['username'];
$name = $_POST['name'];
$favouritenumber = $_POST['favouritenumber'];
if(mysqli_query($conn,"INSERT INTO user(username,name,favouritenumber) VALUES ('$username', '$name', '$favouritenumber');"))
    echo "Successfully Inserted";
    //echo "<a href='login_success.php'>Back to main page</a>";

else {
    echo "ERROR not entered";
}
// close connection
mysqli_close();
?>