1

mysqli データ INSERT が機能していませんが、エラーはありません。

これは次の形式です。

<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 が彼のコメントで述べたように、insert ステートメントを準備しましたが、実行しませんでした。それが機能していない理由です。

$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 に答える