-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エクステンションは減価償却されます。コードを変換して使用するmysqliか、機能するようになったら検討してくださいPDO

MySQLi リファレンス
PDO リファレンス

于 2013-08-29T23:12:33.207 に答える