I'm new to working with PHP and a mySQL DB. I"m trying to make a user input there user name(UN) to enter this one part of my site. I have a mySQL DB(test) with a users table called "test". I know that I'm connecting ok, because I tested it by creating a simple page to open the DB and list all the users(from the UN field), or select a specific one. I then created a page called "input.php" for a test of getting input. As seen here>
<html>
<body>
<form action="test.php" method="get">
UN: <input type="text" name="U">
<input type="submit">
</form>
</body>
</html>
The input from above goes to "test.php" below where it is checked with current data in my DB.
<?php
$hostname = "test.db.some#.somehost.com";
$username = "test";
$dbname = "test";
$password = "password";
$usertable = "test";
$yourfield = "UN";
mysql_connect($hostname, $username, $password) OR DIE ("Unable to
connect to database! Please try again later.");
mysql_select_db($dbname);
$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]";
$result = mysql_query($query);
if ($result) {
while($row = mysql_fetch_array($result)) {
$name = $row["$yourfield"];
echo "Hello: $name<br>";
}
}
else {
echo "User dosen't exit!";
}
mysql_close();
?>
And this is the error I get> *Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/content/81/11107981/html/test.php on line 20*
I know I'm close, but I want the cigar. ;)
You should write the query like this instead:
Or you can write it like this:
mysql_* are deprecated. You should avoid them.
Change
to
,
to
And
to
your first problem is solved but here is the solution to your second problem along with the help to convert this code to mysqli
mysql_query
ormysqli_query
will return the resource .. and that will be true irrespective of whether rows are fetched or not ..what you need to check if there is any data that is being fetched in actual .. so usemysqli_num_rows(mysqli version of mysql_num_rows)
I think the problem is that you don't escape the quotes in the query:
Try the following: