2014-10-29 1 views
0

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

table: sales 

columns: year, q1, q2, q3, q4 

values: 2011, 127.24, 106.54, 88.04, 120.89 

При попытке вернуть $ result запрос из моей базы данных. Она возвращает два предупреждения:

mysql_query() ожидает параметр 1, чтобы быть строкой

mysql_error() ожидает параметр 1, чтобы быть ресурсоемким

Это мой код:

<?php 

$mysqli = mysqli_connect("localhost","admin","admin","testDB"); 

$year= $_POST['year']; 

$taryear= filter_input(INPUT_POST, 'year'); 
$yearsql= "SELECT year FROM sales WHERE year = '".$taryear."'"; 
$result= mysql_query($mysqli, $yearsql) or die(mysql_error($mysqli)); 


?> 

<html> 
<body> 
    <form action = "salespie.php" method = "POST"> 
     <select name = "year"> 
      <option value = "2011">2011</option> 
      <option value = "2012">2012</option> 
      <option value = "2013">2013</option> 
     </select> 
     <input type = "submit" value = "Submit"> 
    </form> 
</body> 
</html> 

Я попытался повторить сам $year, и он возвращается 2011.

Я также echo'd $yearsql с результатом: SELECT year FROM sales WHERE year = '2011'

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

Любые рекомендации/помощь были бы очень признательны!

Спасибо,

+5

Использование различных API, еще один (50-й на этой неделе). Вот и все, я направился в бар. То, что джин и тоник - единственное, что «хорошо сочетается». –

+0

Вы смешиваете 'mysql _ *()' и 'mysqli _ *()'. Это разные API-интерфейсы - используйте только 'mysqli _ *()'. –

+0

Позвольте мне помочь вам в этом. http://stackoverflow.com/search?q=mysql_query%28%29+expects+parameter+1+to+be+string | http://stackoverflow.com/search?q=mysql_error%28%29+expects+parameter+1+to+be+resource –

ответ

4

Как Фред упоминался в комментариях, вы смесительные mysql_* и mysqli_* функции.
They are not the same thing.

Учитывая, что вы передаете вашу линию связи, вы, вероятно, значит использовать mysqli_query вместо этого.

0

mysqli_connect использует новые объектно-ориентированные классы mysql и возвращает новый объект.

запрос должен работать, если вы

$result = $mysqli->query($yearsql); 
if(!$mysqli->errno) //Check if an error occured * fixed small typo with an extra o { 
    echo 'Error: '.$mysqli->error; 
} 

Проблема вы используете Mysqli объекты со старыми (не рекомендуется) методы MySQL.

Существуют mysqli процедурные функции для работы mysqli. Если вы используете mysql_query или mysql_error, замените их на mysqli_ эквивалентов.

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