0

phpmyadmin を介してテーブルにデータを挿入しました。使用するクエリが表示されるので、それをコピーして php コードに貼り付けました。

私の Php コードはフォームを送信すると想定されており、クエリに $_POST('name') を取得しようとしています。コードを実行すると、 name が入るversion_nameフィールド以外はすべて入力されます。

面白いことに、phpmyadmin に正しく挿入する同じ MYSQL クエリを使用しています。

POSTではなくランダムな名前を試して、送信されるかどうかを確認しましたが、空白が表示され続けます...何か提案はありますか?

$sql = "INSERT INTO `Prototype`.`Version` ('version_id', `version_name`, `version_status`, `created_date`, `created_by`) VALUES ('','A', 'A', CURRENT_TIMESTAMP, NULL);";

これは挿入部分です。version_id は自動インクリメントされているため、削除しようとしましたが、助けにはなりません。

ここに画像の説明を入力

最初の行は、php から送信されたときの結果です。2 行目は、phpmyadmin から直接挿入したときです。

ここに画像の説明を入力

私のphpからversion_nameを送信するための助けは素晴らしいでしょう!

編集 - -

ここに私のphpコードがあります

    <?php

// Retrieve form data
$name = $_POST['name'];

if (!$name) {
    echo "save_failed";
    return;
}


$db = array(
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'Prototype',
);

$link = @mysql_connect($db['host'], $db['login'], $db['password']);
if (!$link) {
    echo "save_failed";
    return; 
}
mysql_select_db($db['database']);

// Clean variables before performing insert
$clean_name = mysql_real_escape_string($name);


// Perform insert
$sql = "INSERT INTO `Prototype`.`Version` (`version_name`, `version_status`, `created_date`, `created_by`) VALUES ( 'A', 'A', CURRENT_TIMESTAMP, NULL);";

if (@mysql_query($sql, $link)) {
    echo "success";
    @mysql_close($link);
    return;
} else {
    echo "save_failed";
    @mysql_close($link);
    return;
}

?>
4

3 に答える 3

0

サーバーのエラーでした。データベースを削除してゼロから始めたところ、問題は解決しました。xamppをアンインストールして再インストールするところまでほとんど行きました。

于 2013-08-15T06:05:55.197 に答える
0

これは、あなたの質問への回答ではなく、バイバイによるものですが、Mysql 4 では次のように動作します。

自動インクリメント値は

  • 名前付きフィールドを指定する場合、完全に除外されます
  • ヌル
  • 0
  • '' (空文字列)

Mysql 5 から、最後のものは機能しません。

これは、Mysql 5 で削除された Mysql 4 の文書化されていない機能でした。

于 2013-08-14T10:00:03.107 に答える
0

まず第一$_POST('name');に、何$_POST['name'];も正しくありません。次のクエリを使用して、質問に答えてください。

$sql = "INSERT INTO `Prototype`.`Version` (`version_name`, `version_status`, `created_date`, `created_by`) VALUES ('A', 'A', CURRENT_TIMESTAMP, NULL)";

また、提供された構造から作成された自分のテーブルでも確認しました。そのクエリを以下に示します。

CREATE TABLE `proto` (  `version_id` int(3) NOT NULL AUTO_INCREMENT,  `version_name` varchar(45) NOT NULL,  `version_status` varchar(45) NOT NULL,  `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `created_by` varchar(45) DEFAULT NULL,  PRIMARY KEY (`version_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

以下のコードは、php 経由で送信するためのものです。

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
$db = new PDO("mysql:host=".HOST.";dbname=".DBNAME.";charset=utf8", USERNAME, PASSWORD, $options);
$query = $db->prepare("INSERT INTO `Prototype`.`Version` 
                                   (`version_name`, 
                                    `version_status`, 
                                    `created_date`, 
                                    `created_by`) 
                                   VALUES 
                                  ('A', 
                                   'A', 
                                   CURRENT_TIMESTAMP, 
                                   NULL)");
$result = $query->execute();
return $result ? true : false;
于 2013-08-14T09:35:57.807 に答える