2015-06-09 5 views
-2

Я изучаю php и mysql на данный момент, и я работаю над тем, чтобы мой текущий сайт был динамичным.Проблемы с mysql в php

Я просмотрел несколько руководств и работал над своим собственным кодом, и, насколько мне известно, он должен работать, но когда я проверяю его в Интернете, он ничего не делает.

Есть ли что-то очевидное, что я пропустил в приведенном ниже коде, и есть ли все равно, чтобы отображать ошибки в php, которые помогут мне обнаружить, что я сделал неправильно?

<? 
    function functions($method, $query) { 
    $con = mysql_connect("hostname","username","password"); 

    mysql_select_db("databasename", $con) or die(mysql_error()); 


    if($method = 'get') { 
     $result = mysql_query($query); 
     return $result; 
     echo $result; 
    } 

    if($method = 'send') { 
     $result = mysql_query($query); 
    } 
    } 

    $query = "SELECT * FROM 'content' where 'ID' = 1"; 

    $heading = functions('get', $query); 

?> 

<h1><?php echo $heading;?></h1> 
+0

Пожалуйста, не забудьте правильно разместить свой код. Каждая строка должна иметь 4 пробела перед ней. Если вы копируете и вставляете редактор, просто переместите все в одну строку перед копированием и вставкой сюда. – Styphon

+0

Первой проблемой является использование устаревших функций 'MySQL_ * '. Вы не должны использовать их больше, посмотрите на MySQLi или PDO. – Styphon

+0

Вторая (потенциальная) проблема заключается в том, что вы используете короткий тег PHP '

ответ

1

Сначала включите отчет об ошибках. Добавьте эту строку внутри ваших php-тегов в качестве первой строки.

error_reporting(E_ALL); 

Тогда избегайте использования коротких тегов. Используйте теги <?php ?>. Иногда короткие тэги могут не включать вашу конфигурацию php.

Проверьте, не возвращается ли что-либо из вашего запроса. Было ли это успешным или неудачным.

и оператор сравнения == или ===. Вы использовали оператор присваивания (=) внутри вашей функции. Вам нужно это исправить, иначе ничего не вернется.

, а когда вы echo mysql_query();, он возвращает только ресурс (если он был успешным, в противном случае - ложным). Вы должны использовать mysql_fetch_array() или получить данные из запроса перед эхом.

И, наконец, не используйте расширения mysql_*. Они устарели. Используйте вместо этого MySQLi или PDO_MySQL.

0

Я не уверен, что вы просите, но если вы хотите знать, как подключиться к текущей базе данных MySQL, начните с этого.

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 
0

Проблема заключается в вашем запросе, и да, вы можете получить сообщения об ошибках, но вам нужно использовать проверку ошибок. Вы не проверяете, был ли ваш запрос успешным или нет. Попробуйте что-то вроде этого:

if (! $result = mysql_query($query)) 
{ 
    // NB: die should never be used on a live website, use only whilst building the website 
    die('ERROR['.mysql_errno().']: '.mysql_error()); 
} 

Это даст вам сообщение об ошибке, связанной с вашим запросом, потому что вы используете кавычки вокруг своей таблицы и столбца. MySQL не использует там кавычки ('), но отметит `. Это тонкая, но важная разница, и они являются необязательными. Это будет работать нормально:

SELECT * FROM content WHERE ID = 1 
0

Вы используете неправильное сравнение ... = должен быть == в $method = 'get' и $method = 'send':

if($method == 'get') { 
    $result = mysql_query($query); 
    return $result; 
    echo $result; 
} 

if($method == 'send') { 
    $result = mysql_query($query); 
} 

А также вы используете PHP короткий тег <?. Поэтому, пожалуйста, проверьте свой php.ini на своем сервере, если он не отключен. Вы должны указать пользователю <?php.

И как уже упоминалось, вы не должны использовать mysql_*, его устаревший. Вместо этого используйте MySQLi или PDO.

И если вы хотите, чтобы увидеть ошибки в PHP, просто добавьте эту строку в код, где-то в начале:

error_reporting(E_ALL^E_NOTICE); 

Он покажет вам все ошибки в коде, за исключением сообщений, уведомлений, которые вам не нужно. Если вы хотите также видеть это сообщение, измените его на:

error_reporting(E_ALL); 
0

Что очевидно, что я пропустил в коде ниже

Вы должны быть осторожны с использованием = и ==, потому что они означают разные вещи. В вашем примере выше вы написали следующее:

if($method = 'get') { 
    $result = mysql_query($query); 
    return $result; 
    echo $result; 
} 

Это действительно проверяет, если задание (метод $ = «получить») был успешным. Я полагаю, что вы хотите сделать, это проверить, если $ метод равно «получить», которые вы могли бы сделать так:

if($method == 'get') { 
    $result = mysql_query($query); 
    return $result; 
    echo $result; 
} 

Другое дело, следует отметить, что вы назвали функцию «функции» который может быть немного запутанным. Я предлагаю вам попытаться назвать функции чем-то более понятным, поэтому вы можете легко найти его в будущем и по мере роста вашего кода.

Как прокомментировали другие, вы, вероятно, должны использовать MySQLI вместо этого, так что вот ссылка на это тоже. Это не так сложно, как кажется, но гораздо лучше узнать сейчас. PHP Mysqli

есть в любом случае для отображения ошибок в PHP, которые помогли бы мне узнать, что я сделал не так?

Часто рассматривающий ошибки, которые вы получаете, является единственным способом получить представление о проблеме, которую вы испытываете. Вот большой вопрос о переполнении стека об ошибках и разочарованиях, которые могут возникнуть у вас, без ошибок: How to get useful error messages in PHP?

Смежные вопросы