Php Mysql选择命令问题

时间:2012-01-15 18:11:12

标签: php mysql

我想检查一些数据,如果ti仍留在数据库中。示例:在我的表单中有两个表单字段。 1)url 2)名字。所以我想检查会话用户是否已经在数据库中有这个'url'和'name'然后它必须显示错误消息。这里只是几个mysql代码..

<?php
$url        = mysql_real_escape_string(trim($_POST['url']));
$name       = mysql_real_escape_string(trim($_POST['name']));
$uname  = $_SESSION['uname'];

$check_add  = mysql_query("SELECT * FROM add_fav WHERE url ='$url' AND name= '$name' 
AND uname = '$uname' ");

$num        =  mysql_num_rows($check_add); 

if($num > 0)
            $err[] = "Already exist";
?>

但它没有检查。可能是我的查询问题 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

尝试并调​​试您的脚本以确保您的select语句实际具有值...回显您的变量以确保它们有数据...在您执行select语句之前检查它,如果它们即将到来empty确保在运行mysql_real_escape_string之前实例化db连接,否则它将无效...

答案 1 :(得分:0)

如果你有与mysql的开放连接,你试过吗?

您是否直接在MySQL中尝试过此查询(例如在PhpMyAdmin中?)

你应该使用PDO而不是mysql_ *,这样更简单。

这是一个例子,在代码中应该有效(然后它取决于你的表是否就像你向我们展示的那样):

<?php
$oPdo = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'login', password');

// here's your query :
$oStmt = $oPdo->prepare ('SELECT * FROM add_fav WHERE url = :url AND name= :name AND uname = :uname');

$oStmt->execute (array (
    'url' => trim($_POST['url']),
    'name' => trim($_POST['name']),
    'uname' => $_SESSION['uname']
));

if (count($oStmt->fetchAll(PDO::FETCH_ASSOC)) > 0)
    $err[] = "Already exist";
?>