-1

我正在尝试运行这个 PHP 函数:

function makeString() {
    // Create our random string
    $string = "";
    $characters = array('a', 'b', 'c', 'd');

    for ($i = 0; $i < 4; $i++)
    {
        $string .= $characters[mt_rand(0, 4)];
    }

    $sql="SELECT COUNT(*) FROM urls WHERE short_url = '{$string}'";
    $rs=mysql_query($sql,$conn);
    $result=mysql_fetch_array($rs);

    if($result['COUNT(*)'] > 0)
    {
        // if it already exists, do it again
         makeString();
    }
    else
    {
        return $string;

        //insert the data
    }
}

makeString();

但我收到这些错误:

Warning: mysql_query() expects parameter 2 to be resource, null given in /home/charlie/public_html/short/shorten.php on line 15

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /home/charlie/public_html/short/shorten.php on line 16

他们的意思是什么?

所有表/数据库列似乎都还可以,并且没有保留字等...

4

2 回答 2

2

$conn在函数范围内不可用,makeString()您可以删除它,因为如果您已经连接,则不需要它,或者您可以将其作为函数参数传递,例如:

makeString($conn);
于 2013-08-29T23:12:33.193 回答
2

您需要定义您的$conn或将其传递给函数。

//Defined Outside of Function
$link = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('database', $link);

//Make argument for connection
function makeString($conn)
{
    //Rest of Function Here
}

//Execute function, passing $link as argument.
$result = makeString($link);

或者

function makeString()
{
    //Define Connection Within Function
    $conn = mysql_connect( 'localhost', 'user', 'pass' );
    mysql_select_db('database', $conn);

    //Rest of Function Here
}

在任何情况下,直接mysql扩展都会被贬值,考虑转换你的代码以使用mysqliPDO一旦你让它工作。

MySQLi 参考
PDO 参考

于 2013-08-29T23:12:33.207 回答