2014-10-04 5 views
2

Я попытался скопировать How to Check if value exists in a MySQL database и сделать свой собственный, но по какой-то причине он не будет работать ...проверка PHP, если значение существует в MySQL

Это то, что я получил:

<?php 
$host = '127.0.0.1'; 
$username = 'root'; 
$password = ''; 
$dbname = 'multiplayer'; 
$con=mysqli_connect($host, $username, $password, $dbname); 

$check_player_ip=mysqli_query($con, 'SELECT `player_ip` FROM `playerdata` WHERE username = "remco" AND active = 0'); 
    if (mysqli_num_rows($check_player_ip) == 0) { 
     //didnt find anything 
    } else{ 
     //found something 
    } 
?> 

Я получаю это ошибка: Анализировать ошибка: синтаксическая ошибка, неожиданный '$ check_player_ip' (T_VARIABLE) в C: \ XAMPP \ HTDOCS \ test.php в строке 1

Решение

Если вы получили ошибку T_VARIABLE, установите флажок varriable перед этим правилом. Вы можете забыли место ';' xD

Спасибо за поддержку!

+0

У вас ошибка (за дополнительную плату я): ** mysqli_query ** должны быть ** mysql_query ** – Arkni

+1

@ Аркни Абсолютно нет. Скорее 'mysql_crap' должен * как минимум * быть' mysqli_crap'. Предложения об обратном должны быть опубликованы десять лет назад. – user2864740

+0

@ user2864740, поэтому в этом случае он должен добавить экземпляр подключения в качестве первого параметра (Edit: он отредактировал свой вопрос). – Arkni

ответ

1

Попробуйте это:

<?php 
$host = '127.0.0.1'; 
$username = 'root'; 
$password = ''; 
$dbname = 'multiplayer'; 

$con = new mysqli($host, $username, $password, $dbname); 

/* Check Connection */ 
    if ($con->connect_error) { 
     printf("Connect failed: %s\n", $con->connect_error); 
     exit(); 
    } 

/* Query - Returns a resultset */ 
    if ($result = $con->query('SELECT `player_ip` FROM `playerdata` WHERE username = "remco" AND active = 0 ')) { 

    if ($result->num_rows <= 0) { 
     //didnt find anything 
      printf("No player"); 
    } else { 
     //found something 
      printf("Select returned %d rows.\n", $result->num_rows); 
    } 

    /* free result set */ 
     $result->close(); 
} 

/* close connection */ 
    $con->close(); 
?> 
+0

Работает отлично. Спасибо! :) – Remco

+0

Отлично Проголосовать за сообщение тогда;) – c0utinh0

+0

У меня недостаточно репутации для него .... Я просто (как самый ..... здесь, на stackoverflow call me) новичок. – Remco

2

Вы смешиваете API MySQL, они не смешиваются. mysql_num_rows

Использование mysqli_num_rows()

Также убедитесь, что подключение к БД также mysqli_* и не mysql_*

EDIT после того как вы отредактировали вопрос.

Вам необходимо пройти DB подключение к вашему запросу:

$check_player_ip=mysqli_query($con,'SELECT...` 

$con быть подключение к БД. Соответственно измените.

Плюс WHERE username = remco - слово remco необходимо обернуть в кавычки, это строка, а не int.

WHERE username = 'remco'


Sidenote:

Ваш нынешний код открыт для SQL injection.
Использовать prepared statements, или PDO with prepared statements.


Edit 2:

Попробуйте инвертирование цитаты:

$check_player_ip=mysqli_query($con, "SELECT `player_ip` FROM `playerdata` WHERE username = 'remco' AND active = 0"); 
    if (mysqli_num_rows($check_player_ip) == 0) { 
     //didnt find anything 
    } 
+0

Я отредактировал код еще раз, и на этот раз с «remco», по-прежнему та же ошибка:/ – Remco

+0

@Remco Перезагрузить мой ответ в разделе «Редактировать» # 2 –

+0

Я все еще получаю ошибку T_VARIABLE:/ – Remco

1

вы должны выполнить этот запрос Mysqli ...

while($rows = mysql_arrayAssoc($ursql)){ 
    $data[]=$rows; 
} 
if($something== $data['attribute']) //attribute(id,name...) 
    echo "ok some data is in" 
else 
    echo "no matching data" 

Я надеюсь, что это поможет вам :)

+0

Это совсем не помогает :) Но спасибо за ответ. – Remco

+0

oh ye, и, конечно, вам нужно настроить соединение, сделайте свою базу данных, не проверите хорошо при запуске php: p – Ales

+0

Я отредактировал подключение к коду для ваших пожеланий :) Может быть, вы поможете мне сейчас? Или вы хотите увидеть базу данных отверстий? : D – Remco

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