私はシンプルなアプリを持っているを取得することはできません、HTMLは単純です:アイテムCRUDデータベースアプリにインポートない、と値
<ul>
<li><a href="create.php"><strong>Create</strong></a> - add a food by
name</li>
<li><a href="read.php"><strong>Read</strong></a> - find a food and the
nutrition values</li>
<li><a href="update.php"><strong>Create</strong></a> - update a foods
values</li>
<li><a href="delete.php"><strong>Read</strong></a> - delete an entry</li>
</ul>
私は「テスト」という名前の1つのデータベースを持っているし、成功したテーブル「foodnamesを作成しました"これはmySQL管理者には明白です。したがって、sql initファイルは投稿しません。
私はアイテム(食べ物)を追加しようとすると、私は次のエラーメッセージが出ます:
INSERT foodnames(foodName、カロリー、タンパク質、炭水化物、 脂肪)値(INTO:foodName、:カロリーを、:タンパク質:炭水化物、:脂肪) SQLSTATE [42S02]:ベーステーブルまたは見つからないビュー:1146表は 'food.foodnames' はここで
存在しません、私のcreate.phpです:
if (isset($_POST['submit']))
{
require "../config.php";
require "../common.php";
try
{
$connection = new PDO($dsn, $username, $password, $options);
$new_food = array(
"foodName" => $_POST['foodName'],
"calories" => $_POST['calories'],
"proteins" => $_POST['proteins'],
"carbohydrates" => $_POST['carbohydrates'],
"fats" => $_POST['fats']
);
$sql = sprintf(
"INSERT INTO %s (%s) values (%s)",
"foodnames",
implode(", ", array_keys($new_food)),
":" . implode(", :", array_keys($new_food))
);
$statement = $connection->prepare($sql);
$statement->execute($new_food);
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
}
?>
<?php require "templates/header.php"; ?>
<?php
if (isset($_POST['submit']) && $statement)
{ ?>
<blockquote><?php echo $_POST['foodName']; ?> successfully added.
</blockquote>
<?php
} ?>
<h2>Add a food</h2>
<form method="post">
<label for="foodName">Foods Name</label>
<input type="text" name="foodName" id="foodName">
<label for="calories">Calories per 100 grams</label>
<input type="text" name="calories" id="calories">
<label for="proteins">Proteins in %</label>
<input type="text" name="proteins" id="proteins">
<label for="carbohydrates">Carbohydrates in %</label>
<input type="text" name="carbohydrates" id="carbohydrates">
<label for="fats">Fats in %</label>
<input type="text" name="fats" id="fats">
<input type="submit" name="submit" value="Submit">
</form>
<a href="index.php">Back to home</a>
<?php require "templates/footer.php"; ?>
なぜこれはfood.foodnamesを探していますか? test.foodnamesの代わりに、正しい構文は何でしょうか?前述したように、テストデータベースは1つしかなく(食物データベースは存在しません)、テーブルのフードネームはそこにあります。さらに
私はデータベースから読み取るしようとしたとき、私は次のエラーを取得する
お知らせ:未定義のインデックス:Cでのユーザ入力:ライン19 SELECTの\ xamppの\ htdocsに\パブリック\のread.php * foodnames FROM WHERE FoodName LIKE:無効パラメータ番号:パラメータが定義されていなかった
注意:未定義の変数:Cにおける結果:\ XAMPP \ htdocsに公共の\ read.php \ライン37には SQLSTATE [HY093] USER_INPUT通知の結果:未定義インデックス: の場所C:\ xampp \ htdocs \ public \ read.php用
<?php /** * Function to query information based on * a parameter: in this case, food name. * */ if (isset($_POST['submit'])) { try { require "../config.php"; require "../common.php"; $connection = new PDO($dsn, $username, $password, $options); $sql = "SELECT * FROM foodnames WHERE FoodName LIKE :user_input"; $userInput = $_POST['userInput'] . '%'; $statement = $connection->prepare($sql); $statement->bindParam(':FoodName', $userInput, PDO::PARAM_STR); $statement->execute(); $result = $statement->fetchAll(); } catch(PDOException $error) { echo $sql . "<br>" . $error->getMessage(); } } ?> <?php require "templates/header.php"; ?> <?php if (isset($_POST['submit'])) { if ($result && $statement->rowCount() > 0) { ?> <h2>Results</h2> <table> <thead> <tr> <th>#</th> <th>Food Name</th> <th>Calories/100g</th> <th>Proteins</th> <th>Carbohydrates</th> <th>Fats</th> <th>Time to burn by running</th> </tr> </thead> <tbody> <?php foreach ($result as $row) { ?> <tr> <td><?php echo escape($row["id"]); ?></td> <td><?php echo escape($row["foodNAme"]); ?></td> <td><?php echo escape($row["calories"]); ?></td> <td><?php echo escape($row["proteins"]); ?></td> <td><?php echo escape($row["carbohydrates"]); ?></td> <td><?php echo escape($row["fats"]); ?></td> <td><?php echo escape($row["ttb"]); ?> </td> </tr> <?php } ?> </tbody> </table> <?php } else { ?> <blockquote>No results found for <?php echo escape($_POST['location']); ?>.</blockquote> <?php } }?> <h2>Find food by name</h2> <form method="post"> <label for="food">Food</label> <input type="text" id="food" name="food"> <input type="submit" name="submit" value="View Results"> </form> <a href="index.php">Back to home</a> <?php require "templates/footer.php"; ?>
申し訳ありません:行に私がしようとしています何74
は、彼が唯一のread.phpコードISTここでは、一つの文字を入力した場合でも、ユーザの入力に基づいてデータベースのエントリを取得することがあります非常に冗長なコード。
'...どこのFoodName LIKE:FoodName'ではなく、user_inputで、PHP変数ではなくパラメータ名を使用する必要があります。 –
そしてインサートの花瓶では、おそらくサーバー上の間違ったデータベースに接続しています。 – Shadow
あなたの設定を見て、私はそれが食べ物だと確信してテストしません。 –