2015-02-27 4 views
0

Я пытаюсь подсчитать количество строк в таблице с предложением where. Затем я хочу вычесть из статического числа (количество принадлежащих палаток - сколько киосков используется пограничниками).PHP Количество строк, а затем вычитание из статического числа

Я проверил это с помощью проверки подлинности PHP, просмотрел stackoverflow для чего-либо подобного, и, хотя ошибок нет, все это показывает номер 16. Он не вычитает количество строк из 16. Очевидно, я это делаю неправильно!

<?php 
$result = mysqli_query("SELECT count(*) FROM boarders WHERE boardtype LIKE 'Stall%'"); 
$row = mysqli_fetch_row($result); 
$num = $row[0]; 
echo (16 - $num); 
?> 

Я получил то, что хотел работать. Нет, это не mysqli и нуждается в обновлении до этого, но я еще не узнал об этом и буду (надеюсь) в какой-то момент. Я просто гадость с кодом для себя, ничего важного. Ниже показано, как я хочу, хотя сейчас так хорошо.

<?php 
$query = "SELECT COUNT(*) AS stallboarders FROM boarders WHERE boardtype LIKE 'Stall%'"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 

echo (16-$row['stallboarders']); 
} 
?> 
+0

@JayBlanchard '$ num = $ row [0];' - Я думаю * Сэм *, в некотором роде. –

+0

Ах, да, я вижу это сейчас. * Ralph * @ Fred-ii- –

+0

@OP: Убедитесь, что строка является «int», а не VARCHAR. Также используйте 'SELECT *' вместо 'SELECT count (*)' –

ответ

0
<?php 
$query = "SELECT COUNT(*) AS stallboarders FROM boarders WHERE boardtype LIKE 'Stall%'"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 

echo (16-$row['stallboarders']); 
} 
?> 
+1

Ах, поэтому вы, вероятно, смешивали API-интерфейсы mysql_ и 'mysqli_', которые не смешиваются вместе. Мой метод mysqli_ работал безупречно. –

0

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

$result = mysqli_query("SELECT 
        ^missing connection to DB 

отсутствует параметр соединения DB $result = mysqli_query($db_connection,"SELECT

и требуется с mysqli_query()http://php.net/manual/en/mysqli.query.php
(mysqli_ функций).

Sidenote: Тестирование ответ с моим собственным, получают те же результаты.

Очевидно, что вы смешивали API MySQL, не передавая соединение DB с вашим запросом.

  • Эти различные API не смешиваются друг с другом.

Ниже представлен метод mysqli, который вы должны были использовать, и передачу DB-соединения к вашему запросу.

<?php 

$DB_HOST = 'xxx'; 
$DB_USER = 'xxx'; 
$DB_PASS = 'xxx'; 
$DB_NAME = 'xxx'; 

$Link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if($Link->connect_errno > 0) { 
    die('Connection failed [' . $Link->connect_error . ']'); 
} 

$result = mysqli_query($Link,"SELECT count(*) 
      FROM boarders WHERE boardtype LIKE 'Stall%'"); 
$row = mysqli_fetch_row($result); 

// will return 14 with 2 rows in table 
$num = $row[0]; // id is int 

// debug test 
// will return 16 
// $num = $row[1]; // boardtype is varchar 

// will echo 14 with 2 rows in table 
echo (16 - $num); 

$row[0] должен быть int типа для того, чтобы получить правильные результаты.

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