0

这是我在试验 PHP 我是新手。我正在尝试查看是否已在 mysql 数据库中找到给定的用户名,这是我当前的代码:

<?php
// $uname is the username I am trying to see if is the database
$uname = "djm";
//server info
$servuser = "root";
$servpass = "";
$db = "toob";
$server = "127.0.0.1";
//connecting to server
$db_handle = mysql_connect($server, $servuser, $servpass);
$db_found = mysql_select_db("toob", $db_handle);

//checking to see if ocnnected
if ($db_found) {
    print("connected");

//defining my sql statement
    $sql = "SELECT username FROM users WHERE username = $uname";
    $result = mysql_query($sql);


    if ($result) {
        print("Yes");
    } else {
        print("No");
    }
} else {
    print("Can't connect to server");
}

我总是打印不,我设法通过替换来打印是:

$sql="SELECT username FROM users WHERE username = $uname";
    $result=mysql_query($sql);

$sql="SELECT username FROM users WHERE username = 'djm'";
$result=mysql_query($sql);

但是我需要是否处理变量。

4

3 回答 3

4

您缺少引号:

在将输入作为 mysql 查询传递之前转义输入是个好主意。尝试:

$sql = "SELECT username FROM users 
WHERE username = '". mysql_real_escape_string($uname)."'";

目前,如果查询执行成功,它会说“是”。如果您要检查记录是否存在,请替换if ($result)为。if(mysql_num_rows($result) > 0)

不相关:mysql_*功能现已弃用,我建议切换到mysqlior PDO

于 2013-07-26T16:02:29.083 回答
1

首先,您应该转义所有用户输入:

$username = mysql_real_escape_string($uname);

那么您需要将 SQL 值用引号括起来:

$sql="SELECT username FROM users WHERE username = '$username'";

离你的问题有点远;从php 的网站引用的 mysql 上的某些内容:“此扩展自 PHP 5.5.0 起已弃用,不建议用于编写新代码,因为它将来将被删除。”

你最好使用mysqli

于 2013-07-26T16:04:37.773 回答
-1

替换这个

 if ($result) 

 if(mysql_num_rows($result) > 0)
于 2013-07-26T16:25:27.677 回答