2015-04-01 5 views
-2

Я пытался сравнить две строки: одну с именем пользователя, которое вводит пользователь, а второй - данные, которые моя программа извлекает из базы данных. Вот мой PHP код:PHP, сравнивающий два datavalues ​​

$sqlCheck = "SELECT Username FROM location WHERE Username ='$usernamebeingreq'" ; 
$result2 = mysqli_query($con, $sqlCheck); 
$result2 = mysql_fetch_array($result2); 
$resultCheck = false; 
//mysqli_query($con, $sqlCheck); 
if((strcmp($result2, $usernamebeingreq) == 1)) 
{ 
    $sql="INSERT INTO pending_req (fromUser, toUser) VALUES ('$username', '$usernamebeingreq')"; 
    $resultCheck = true; 
} 

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

+0

вам нужно добавить ссылку в $ result2 в столбец, проверяют. что дает var_dump ($ result2)? – Maximus2012

+1

** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить пользователя данные по вашему запросу. ** НЕ используйте ** интерполирование строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). – tadman

+2

1. Вы переписываете '$ result2', 2.' strcmp' предназначен для сравнения строк, а не объектов или других примитивов. 3. 'strcmp === 0', когда строки равны, а не' 1'. 4. Ваш SQL уязвим для SQL-инъекции. – Dai

ответ

2

Вы не можете комбинировать mysql_ и mysqli_ следующим образом. Кроме того, вам нужно перебирать результирующего набора, чтобы получить значение и сравнить его тогда:

$result2 = mysqli_query($con, $sqlCheck); 
while ($row2 = mysqli_fetch_array($result2)) 
{ 
    $username_to_check = $row2['Username']; 
} 
$resultCheck = false; 

if((strcmp($username_to_check , $usernamebeingreq) == 1)) 
/* rest of your code */ 

Подробнее о mysqli_fetch_ функций: http://php.net/manual/en/mysqli-result.fetch-array.php

+0

Также, как упоминается выше в комментариях RiggsFolly, все это может даже не понадобиться, так как требуемая проверка может быть реализована в самом самом запросе, а не в сравнении таких строк. – Maximus2012

+0

Цените помощь! – Brockify