我如何比较输入mysql数据与php/sql


How do I compare input to mysql data with php/sql?

我是新的工作与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_querymysqli_query将返回资源。不管行是否被获取,这都是正确的。您需要检查的是,在实际中是否有任何数据正在被获取。所以使用mysqli_num_rows(mysqli version of mysql_num_rows)