开发者

PHP script results 500 Internal server error

开发者 https://www.devze.com 2023-01-22 06:46 出处:网络
I can\'t understand why this PHP script gives me 500 internal server error. $query = \"SELECT video_id,title FROM video_id\";

I can't understand why this PHP script gives me 500 internal server error.

$query = "SELECT video_id,title FROM video_id";
$videos = mys开发者_开发知识库ql_query($query);

if($videos){
$videos = mysql_fetch_assoc($videos);
foreach($videos as $video){         
        echo '<div class="video">';
        echo '<a href="video.php?v="'.$video['video_id'].'">         <h3>"'.$video['title'].'"</h3></a>';
        echo '</div>';
}
}else{
echo "<p>No new videos actually</p>";
}
mysql_close();

?>

That's the code. It seems as every other simple script i wrote before. Watching the error log via cpanel i saw this error:

[Mon Oct 25 03:25:24 2010] [error] [client 80.181.111.60] SoftException in Application.cpp:256: File "/home/netatwor/public_html/cms/media/related.php" is writeable by group

Can anyone help me?


That's an error your webserver (or a frontend or module) is giving. It's checking permssions on the file /home/netatwor/public_html/cms/media/related.php and it doesn't let it run because it is group writable.

To fix that, do chmod gw-w /home/netatwor/public_html/cms/media/related.php, or the equivalent in what you use to handle permissions on your site.


I have no idea what Application.cpp is, but the error about being writable by group sounds like a security warning that your php file has the wrong permissions. Google for chmod or uni file persissions.


Unrelated to your error, but I do believe your code is flawed on many levels, and wont be doing what you think it's doing. Let me show you:

$videos = mysql_fetch_assoc($videos);
foreach($videos as $video){         
        echo '<div class="video">';
        echo '<a href="video.php?v="'.$video['video_id'].'">         <h3>"'.$video['title'].'"</h3></a>';
        echo '</div>';
}

You may think that code is going to run for each video that is returned by the query, but it's not. You're actually foreach'ing over a single video, and that's it. The value of $video inside the foreach loop won't be an array. It will be the individual values within a single video array.

But there's more:

if($videos){

The value of mysql_query is either false, which means there was an error, or a resource pointing towards zero or more rows. It does not tell you if there were rows returned or not.

This is how your code should be written:

$query = "SELECT video_id,title FROM video_id";
$videos = mysql_query($query);

/**
 * There was an error if $videos is false. Use mysql_error()
 * to get a message explaining the error.
 */
if (!$videos) {
    die(mysql_error());
}

/**
 * You use the function mysql_num_rows() to find out how many
 * rows were returned by the query.
 */
if(mysql_num_rows($videos) > 0) {

    /**
     * You need to keep calling mysql_fetch_assoc() until there are
     * no more rows to return.
     */
    while($video = mysql_fetch_assoc($videos)) {      
            echo '<div class="video">';
            echo '<a href="video.php?v="'.$video['video_id'].'">         <h3>"'.$video['title'].'"</h3></a>';
            echo '</div>';
    }
} else {
    echo "<p>No new videos actually</p>";
}
mysql_close();
0

精彩评论

暂无评论...
验证码 换一张
取 消