平素より大変お世話になっております。
当方、PHPの初学者でございます。
(C#やhtmlはある程度やっているので、関数や条件文や演算子など、オブジェクト指向についての基本的なことは理解しているつもりです)
データベースを学ぶ必要性を感じたので、ある講座を参考にPHPの学習を始めたところです。
基本的な事項を押さえた上で、PHPとMySQLを使用し、実際に簡単なデータベースとのやりとりを行ってみようと思った矢先なのですが、いきなりつまづいてしまい、ネットで検索しても的を得た回答が得られず、全く進めなくなってしまったので、この度ご相談に上がりました。
現象としましては、
Webページでユーザーがフォームを打ち込み、その値をデータベースに送るという段階で、以下の実装を行うという学習内容の中で、(あ、xamppを使用しています)
<?php if($_SERVER['REQUEST_METHOD'] == 'POST'){ $fname = $_POST['fname']; $lname = $_POST['lname']; $email = $_POST['email']; $gender = $_POST['gender']; $age = $_POST['age']; $comments = $_POST['comments']; $password = $_POST['password']; if(!empty($fname) && !empty($lname) && !empty($email) && !empty($gender) && !empty($age) && !empty($comments) && !empty($password)){ include ('connection.php'); mysqli_query($dbc,"INSERT INTO users(first_name,last_name,email,gernder,age,comments,password) VALUES('$fname','$lname','$email','$gender','$age','$comments','$password')"); $registered = mysqli_affected_rows($dbc); echo $registered."row is affected, everything worked fine!"; }else{ echo "<P style='color:red;'>ERROE: you left some values in blank!</p>"; } }else{ echo "<h2>Please complete the form...</h2>"; } ?> <html> <head> <title></title> </head> <body> <form action="userform.php" method="post"> <p>First Name: <input type="text" name="fname" size="20" maxlength="50" /></p> <p>Last Name: <input type="text" name="lname" size="20" maxlength="50" /></p> <p>Email: <input type="text" name="email" size="40" maxlength="50" /></p> <p>Gender: <input type="radio" name="gender" value="M" /> Male<input type="radio" name="gender" value="F" /> Famale</p> <p>Age: <select name="age"> <option value="0~29">Under 30</option> <option value="30~60">Betwen 30 and 60</option> <option value="60+">Over 60</option> </select></p> <p>Comments:<br /><textarea name="comments" rows="3" cols="40" maxlength="200"></textarea></p> <p>Password: <input type="password" name="password" maxlength="50"></p> <p><input type="submit" name="submit" value="Submit" /></p> </form> </body> </html>
<?php $hostname = "localhost"; $username = "root"; $password1 = ""; $dbname = "MyFirstDatabase"; $dbc = mysqli_connect($hostname, $username, $password1, $dbname) OR die("could not connect to database, ERROR:".mysqli_connect_error()); mysqli_set_charset($dbc, "utf8"); ?>
実際の以下のようなWebページのフォームから、
ユーザーが全て埋めることで、phpMyAdminに値が渡されるはずなのですが、
まず、本来『1 row』となりphpMyAdminに追加・表示されるはずが『−1 row』となってしまい、何も表示されずに困っています。(恐らくこの段階で通信できていないと思われます。また、$registeredが−1になってしまっているので、mysqli_affected_rows($dbc);がおかしいとは思うのですが)
maxlengthと値の長さを揃える、項目の順番も遵守する、など、言われたことをそのままやってるつもりなのですが、どうも上手くいきません。これだけの状況で判断できかねるかと存じますが、もし何か打開策があれば、ご教授願えると幸いです。
何卒よろしくお願い申し上げます。
(PCは先月購入したiMacで、その時に各々インストールしたので、OSもPHPも比較的新しいものだと思います)
回答5件
あなたの回答
tips
プレビュー