一个小错误......

时间:2011-08-02 17:59:30

标签: mysql database phpmyadmin

我正在写一个URL缩短器...我有一个错误,我似乎无法摆脱。我觉得它很明显,但我没有看到它。

(我是菜鸟;))这是错误:

'mysql_result(): supplied argument is not a valid MySQL result resource in <b>/home2/bythewa1/public_html/jbgc/func.inc.php</b> on line <b>23'

这是我在该页面上的代码。

<?php
include("db.inc.php");

function is_min($url)
{

return(preg_match("/jbgc\.me/i", $url)) ? true : false; 

}


function gen_code()
{
$charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';    
return substr(str_shuffle($charset), 0, 6);
}



function exists($code) {
$code = mysql_real_escape_string($code);
$code_exists = mysql_query("SELECT COUNT('url_id') FROM 'mini_shortener' WHERE                  'code'= '$code' LIMIT 1");
return (mysql_result($code_exists, 0) == 1) ? true : false;
 }



function shorten($url, $code){
$url = mysql_real_escape_string($url);
$code = mysql_real_escape_string($code);
mysql_query("INSERT INTO 'mini_shortener' VALUES('', '$url', '$code')");
return $code;


}



?>

2 个答案:

答案 0 :(得分:3)

您的SQL查询中存在错误 - 应使用mysql_error()函数查找有关这些错误的更多信息; - )


在您的情况下,您仍在使用以下查询:

SELECT COUNT('url_id') 
FROM 'mini_shortener' 
WHERE 'code'= '$code' 
LIMIT 1

你不应该在字段名称周围使用单引号 - 但是反写: `
在您的第二个查询中相同,顺便说一句。


使用MySQL:

  • 单引号 ' 是使用arround文字字符串,
  • 和反引号 `是使用循环名称。

答案 1 :(得分:1)

SELECT COUNT('url_id') FROM 'mini_shortener' WHERE 'code' = ...

您无法从字符串文字中进行选择。尝试使用反向标记而不是单引号。

SELECT COUNT(`url_id`) FROM `mini_shortener` WHERE `code` = ...

将列名称放在单引号中的情况不是语法错误,但它们可能不会执行您的操作。例如,只有当$ code实际上是字符串'code'时,'code' = '$code'才会成立。它不会将$ code与列code的内容进行比较。

同样,您需要在INSERT语句中对表名使用反向标记:

INSERT INTO `mini_shortener` VALUES('', '$url', '$code')

供审核:

  

字符串是一个字节或字符序列,包含在单引号(“'”)或双引号(“”“)字符中。如果启用了ANSI_QUOTES SQL模式,则只能在单引号内引用字符串文字标记,因为在双引号内引用的字符串被解释为标识符。

  

标识符引号字符是反引号(“`”)。如果启用了ANSI_QUOTES SQL模式,则允许在双引号内引用标识符。