繁体   English   中英

PHP / MYSQL故障排除,我看不出有什么问题

[英]PHP / MYSQL troubleshoot I can't see whats wrong

这是我尝试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);

但是我需要是否可以解决变量。

您缺少引号:

在将输入作为mysql查询传递之前,最好对输入进行转义。 尝试:

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

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

无关:现在不建议使用mysql_*函数,建议您切换到mysqliPDO

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

$username = mysql_real_escape_string($uname);

那么您需要将SQL值括在引号中:

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

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

您最好使用mysqli

取代这个

 if ($result) 

 if(mysql_num_rows($result) > 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM