使用自动递增键插入用户数据的问题

问题描述 投票:0回答:2

我已经创建了一些PHP代码来创建表,并且它可以工作-注意,ID是自动递增的。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "TrainingDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
} 

// sql to create table
$sql = "CREATE TABLE Courses (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
course VARCHAR(40) NOT NULL
)";

if ($conn->query($sql) === TRUE) {
  echo "Table Courses created successfully";
} else {
  echo "Error creating table: " . $conn->error;
}

$conn->close();
?>

我创建了一些php代码来插入一条记录,并且它可以正常工作。注意,我只需要插入课程而不是ID。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "TrainingDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO Courses (course)
VALUES ('Course1')";

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

$conn->close();
?>

最后,我创建了一些php代码,以便用户可以在表单上输入数据并将其保存在表中。我在使用自动递增键时遇到问题。我收到错误消息警告:mysqli_prepare()恰好需要2个参数,给定1个参数我已经试过$ sql =“ INSERT INTO Courses(id,course)VALUES(?,?)”;我也不确定“ sss”。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Course Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>

<body>

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "TrainingDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
} 

    if(isset($_POST['save'])){
    echo "save<br>";        
    $sql = "INSERT INTO Courses (course)
        VALUES (?)";
        $stmt = mysqli_prepare($sql);
        $stmt->bind_param("sss", $_POST['course_name']);
    $stmt->execute();
    if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

$conn->close();
    }

?>

<div class="container">
  <h2>Course</h2>
  <form course="/course_page.php" method="post">
      <label for="course_name">Course Name:</label><br>
      <input type="text" id="course_name" name="course_name" size="40" maxlength="40"><br><br>

    <button type="submit" class="btn btn-primary" name="save" value="save">Save</button>
  </form>
</div>

</body>
</html>
php mysql
2个回答
0
投票

您需要

$stmt = mysqli_prepare($conn, $sql);

建立连接。


0
投票

O.Jones说了什么,加上那里您只需要一个“ s”:bind_param("sss", $_POST['course_name']);

© www.soinside.com 2019 - 2024. All rights reserved.