1

mysqli 数据插入不起作用,但没有错误我刚开始使用 mysqli,我真的不知道一切都很好我也看到了其他问题,但没有一个解决方案适合我

这是表格:

<head>
<title>NEW</title>
</head>

<body>
<table border="1">
  <tr>
    <td align="center">NEW</td>
  </tr>
  <tr>
    <td>
      <table>
        <form method="post" action="add.php">
        <tr>
          <td>name</td>
          <td><input type="text" name="name" size="20">
          </td>
        </tr>
        <tr>
          <td>type</td>
          <td><select name="ptype">
  <option value="a1">a1</option>
  <option value="a2">a2</option>
  <option value="a3">a3</option>
</select>
          </td>
        </tr>

        <tr>
          <td></td>
          <td align="right"><input type="submit" 
          name="submit" value="GO"></td>
        </tr>
        </table>
      </td>
    </tr>
</table>
</body>
</html>

这是 add.php 文件:

<?php
require("dbconnect.php");
if (isset($_POST['submit'])) {

    $db->query("SET NAMES 'utf8'");


$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");
$stmt->bind_param('ss', $ptype, $name);

$name = $_POST["name"];
$ptype = $_POST["ptype"];



printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* close connection */
}
$db->close();
?>

它说插入了 0 行

  • dbconnect.php 文件包含与 mysqli 的连接
4

3 回答 3

3

改变

$stmt->bind_param('ss', $ptype, $name);

$name = $_POST["name"];
$ptype = $_POST["ptype"];

$name = $_POST["name"];
$ptype = $_POST["ptype"];

$stmt->bind_param('ss', $ptype, $name);
$stmt->execute();
于 2012-10-23T19:56:22.903 回答
2

您已经准备好声明并绑定了参数。现在执行它。

$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");
$stmt->bind_param('ss', $ptype, $name);
$stmt->execute();
于 2012-10-23T19:51:19.047 回答
1

正如@andrewsi 在他的评论中提到的那样,您准备了插入语句但没有执行它。这就是为什么它不工作。

尝试 $stmt->execute();在您的代码中使用。

所以你的查询应该是这样的:

<?php
require("dbconnect.php");
if (isset($_POST['submit'])) {

    $db->query("SET NAMES 'utf8'");


$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");

$name = $_POST["name"];
$ptype = $_POST["ptype"];

$stmt->bind_param('ss', $ptype, $name);
$stmt->execute();




printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* close connection */
}
$db->close();
?>
于 2012-10-23T19:52:26.417 回答