2013-05-10 100 views
0

我是PHP和SQL的新手,我试图编写一个函数,如果SQL查询返回至少一个结果,它将返回true。返回值取决于从SQL查询返回的行数

我有什么到目前为止

function isNew($canNum) 
    { 
    connectToDatabase(); 

    SELECT COUNT(*) as cnt FROM 
    FROM 'cans' c 
    WHERE c.date >= DATE_SUB(NOW(), INTERVAL 1 DAY) 
    AND c.canId = '$canNum'; 

    disconnectDatabase(); 
    //return true if above returns a row 

    disconnectDatabase(); 
    } 

我的问题是怎么做的回报,因为计数不是一个PHP变量,我可以做一个比较<。

+0

您需要使用正确的数据库驱动程序来执行查询并比较结果。以上是无效的PHP。 – Doon 2013-05-10 02:47:49

回答

1
function isNew($canNum) 
    { 
if (count(mysql_fetch_assoc(mysql_query(" 
    SELECT COUNT(*) as cnt FROM 
    FROM 'cans' c 
    WHERE c.date >= DATE_SUB(NOW(), INTERVAL 1 DAY) 
    AND c.canId = '$canNum'; 
")))>0) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
    } 
+0

谢谢我认为这对我有用 – Dawson 2013-05-10 03:08:17

+0

是mysql_fetch_assoc必要的吗? – Dawson 2013-05-10 03:15:19

+1

是的,你需要计数数组元素。 – user2368299 2013-05-10 08:49:20

1

可能是你需要使用这些PHP函数一个在你的代码

<?php 

$q = mysql_query("your query here!") 

if($q = mysql_num_row() > 1){ 
//your code 
} 

?> 
1
<?php 
    function isNew($canNum) 
    { 
    $con=mysqli_connect("localhost","UID","PSW","DB"); //Db connection 
    //connectToDatabase(); 

    $sql="SELECT COUNT(*) as cnt FROM 'cans' c WHERE c.date >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND c.canId = '$canNum'"; 
    $result = mysqli_query($con,$sql); 
    $count_1=mysqli_fetch_array($result); 
    $count=$count_1['cnt']; 
    // disconnectDatabase(); 
    //return true if above returns a row 
    mysqli_close($con); 
    // disconnectDatabase(); 
    return $count; //returns count you can modify it the way you want 
} 

    echo "Current count is ".isNew(10); 
?> 
1

您的代码看起来并不像一块PHP代码!试试这个:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Not connected : ' . mysql_error()); 
} 

// make foo the current db 
$db_selected = mysql_select_db('foo', $link); 
if (!$db_selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 

$number=mysql_num_rows(mysql_query("SELECT `canId` FROM `cans` WHERE `date` >= DATE_SUB(NOW(), INTERVAL 1 DAY) AND `canId` = '$canNum';")); 

if($number>0){ 
    // do what you want to do 
} 

mysql_close($con); 
0

在其他答案建议请避免使用mysql_query并考虑mysqli_query或PDO。使用PDO,您可以执行如下操作:

function isNew($canNum){ 
    $db = new PDO(); 
    $statement = $db->prepare('....your query... WHERE canID=:canID'); 
    $statement->bindParam(':canID', $canNum); 
    $statement->execute(); 
    if($result = $statement->fetch()){ 
    //exists 
    return true; 
    } else { 
    return false; 
    } 
} 

您还将避免SQL注入;