Я написал эту функцию, которая получает имя пользователя и должна проверить, есть ли пользователь в БД.
Это мой код:
$conn = new mysqli($servername, $username, $password, $database, $dbport);
mysql_select_db("myDB",$conn);
//$sql="CALL checkIfExsist(".$name.")";
$sql = "select * from Users where userName='".$name."' LIMIT 1;";
$myData = $conn-> query($sql);
$rowc = mysqli_num_rows($myData);
printf("Result set has %d rows.\n", $rowc);
if($rowc > 0)
{
echo "User ".$name." checked";
}
else
echo "not exsist";
Когда я запускаю этот запрос в терминале, я получаю 1 результат строки, но в итоге я получаю: «В наборе результатов 0 строк».
В чем проблема?
Я думаю, вам нужно изменить код подключения. пожалуйста, посмотрите и попробуйте этим способом
<?php
define("DB_HOST", "db_host");
define("DB_USER", "db_user");
define("DB_PASSWORD", "db_pass");
define("DB_DATABASE", "db_name");
$conn= mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_DATABASE );
$sql = "select * from Users where userName='".$name."' LIMIT 1;";
$myData = $conn->query($sql);
$rowc = mysqli_num_rows($myData);
printf("Result set has %d rows.\n", $rowc);
if($rowc > 0)
{
echo "User ".$name." checked";
}
else
echo "not exsist";
ты пробовал $rowc = $myData->num_rows;
Вы должны использовать mysqli_ вместо mysql_ как mysql_ устарела.
во первых вижу проблему 🙁 вы смешиваете mysql_ и mysqli_ )
Ваше соединение MySQL:
mysql_select_db("myDB",$conn);
Изменить на:
$conn=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
Вы также должны использовать подготовленные заявления:
$stmt = $mysqli->prepare('SELECT * FROM Users WHERE userName = ?')
$stmt->bind_param('s', $username);
if(!$stmt->execute()){
trigger_error("there was an error....".$mysqli->error, E_USER_WARNING);
}
$stmt->store_result();
Тогда, конечно, ваше заявление if:
if ($stmt->num_rows > 0){
echo "User ".$name." checked";
}else
echo"User doesn't exist"