Мне нужна помощь с коротким сценарием, над которым я работаю для создания идентификаторов пользователей. Я создаю уникальные идентификаторы, используя сегодняшнюю дату. Я запускаю запрос к базе данных, чтобы проверить, есть ли какие-либо идентификаторы, которые содержат сегодняшнюю дату.
Если нет уникальных идентификаторов с сегодняшней датой, то я вставляю сегодняшнюю дату в качестве первого идентификатора дня. Если есть идентификаторы, содержащие сегодняшнюю дату, я увеличиваю этот идентификатор на 1 и вставляю этот идентификатор в базу данных.
Это довольно просто. Единственная проблема, с которой я столкнулся, — это выборка массива строк, которые содержат сегодняшнюю дату.
//use today's date for ID
$idDate = date(Ymd);
$param = "{$idDate}%";
//retrieve all rows with today's date in ID
$find = $mysqli->prepare("SELECT * FROM users WHERE userid LIKE ? ");
$find->bind_param("s", $param);
$findresult = $find->execute();
if(!$findresult){
die('Invalid query : ' . mysqli_error($mysqli));
}
$find->store_result();
Запрос извлекает что-то, потому что num_rows
считает по крайней мере 1 строку, и mysqli_error не дает мне никаких ошибок для этого конкретного запроса.
//count the rows
$idcount = $find->num_rows();
//if no rows contain today's date in IDs
if($idcount == 0){
$userid = $idDate . '00';
}
else{
Это дает мне ошибку: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, объект задан
//store today's IDs in array
while($found = mysqli_fetch_array($find)){
$todaysids[] = array($found['userid']);
}//find highest value
$hival = max($todaysids);
//add 1 to highest value
$userid = $hival++;
}
Как я могу получить результат запроса и получить массив?
Вы смешиваете OO и процедурные стили в вашем коде. Ты можешь использовать get_result
и придерживаться стиля OO:
$findresult = $find->execute();
$result = $find->get_result();
while ($found = $result->fetch_array(MYSQLI_ASSOC))
...
Вы можете использовать количество строк в своем запросе как таковое.
$find = $mysqli->prepare("SELECT col1,col2,col3,col4 , count(*) as counts FROM users WHERE userid LIKE ? ");
^^^^^^^^^^^^^^^^^--// for counting rows
$find->bind_param("s", $param);
$find->execute();
$find->store_result();
$find->bind_result( $col1 , $col2,$col3,$col4,$counts); // bind your variables here
$find->fetch() ;
echo $counts ; // will give you number rows here.
echo $col1 ;
редактировать:
while($row = $find->fetch() ;)
{
echo $counts ; // will give you number rows here.
echo $col1 ;
}