我是新的工作与PHP和mySQL数据库。我试图让用户输入那里的用户名(联合国)进入我的网站的这一部分。我有一个mySQL数据库(测试)与一个名为"测试"的用户表。我知道我正在连接,因为我通过创建一个简单的页面来打开DB并列出所有用户(来自UN字段)或选择特定的用户来测试它。然后,我创建了一个名为"input.php"的页面,用于获取输入的测试。如这里所示>
<html>
<body>
<form action="test.php" method="get">
UN: <input type="text" name="U">
<input type="submit">
</form>
</body>
</html>
上面的输入转到下面的"test.php",在那里它与我的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();
?>
这是我得到的错误> *解析错误:语法错误,意外的'"',期望T_STRING或T_VARIABLE或T_NUM_STRING在/home/content/81/11107981/html/test.php在第20行*
我知道我很接近了,但是我想要雪茄。div;)
我认为问题是你没有转义查询中的引号:
尝试以下操作:
$u = $_GET['u'];
$query = "SELECT * FROM $usertable WHERE $yourfield = " . $u;
mysql_*已弃用。你应该避免它们。
改变mysql_connect($hostname, $username, $password) OR DIE ("Unable to
connect to database! Please try again later.");
$connection = mysql_connect($hostname, $username, $password) OR DIE ("Unable to
connect to database! Please try again later.");
$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]";
$query = "SELECT * FROM $usertable WHERE $yourfield = '".$_GET["U"]."'";
和
mysql_close();
mysql_close($connection);
您应该这样写查询:
$query = "SELECT * FROM $usertable WHERE $yourfield = '" . $_GET["U"] . "'";
或者你可以这样写:
$query = "SELECT * FROM $usertable WHERE $yourfield = '{$_GET["U"]}'";
你的第一个问题解决了,但这里是你的第二个问题的解决方案以及帮助将此代码转换为mysqli
<?php
$hostname = "test.db.some#.somehost.com";
$username = "test";
$dbname = "test";
$password = "password";
$usertable = "test";
$yourfield = "UN";
$connect = mysqli_connect($hostname, $username, $password) OR DIE ("Unable to
connect to database! Please try again later.");
mysqli_select_db($dbname);
/* You can combine the above two lines in oen in mysqli by giving db name as fourth parameter
mysqli_connect($hostname, $username, $password, $dbname)
*/
$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]";
$result = mysqli_query($query);
$rowSelected = mysqli_num_rows($result);
if ($rowSelected ) {
while($row = mysqli_fetch_array($result)) {
$name = $row["$yourfield"];
echo "Hello: $name<br>";
}
}
else {
echo "User dosen't exit!";
}
mysqli_close($connect);
?>
mysql_query
或mysqli_query
将返回资源。不管行是否被获取,这都是正确的。您需要检查的是,在实际中是否有任何数据正在被获取。所以使用mysqli_num_rows(mysqli version of mysql_num_rows)