Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна помощь по PHP

Евгений Беспалый Ученик (138), закрыт 4 года назад
в коде:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

header('Access-Control-Allow-Origin: *');

$link = mysqli_connect("$mysql_host","$mysql_user","$mysql_password") or die("error connect");
mysqli_select_db($mysql_database,$link) or die("error db");

if(isset($_POST["name"])) $name = $_POST["name"];
if(isset($_POST["score"])) $score = $_POST["score"];

if(isset($name)&&isset($score)){
//Запрос к БД на получение нужной строки
$q1 = mysql_query("SELECT * FROM result_table1 WHERE name='".$name."'");
if(mysql_num_rows($q1)==1){
$array = mysql_fetch_array($q1);
if($score!=$array['score']) $q2 = mysql_query("UPDATE result_table1 SET 'score'='$score' WHERE 'name'='$name'");
}else{
$q3 = mysql_query("INSERT INTO result_table1 ('name','score') VALUES ('".$name."','".$score."') ");
}
}

$q4 = mysql_query("SELECT * FROM result_table1 ORDER BY score DESC");
while($row=mysql_fetch_row($q4)){
if($i<10){
echo $row[0].' - '.$row[1].' | ';
$i=$i+1;
}
}
?>
вылезает такая ошибка:
Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/q/q987030w/q987030w.beget.tech/public_html/script.php on line 14 error db
Помогите, пожалуйста!
Лучший ответ
Андрей Высший разум (425181) 4 года назад
Подключаешься к базе с помощью библиотеки mysqli (mysqli_connect, mysqli_select_db). А запросы пытаешься выполнить с помощью библиотеки mysql (mysql_query, mysql_num_rows, mysql_fetch_row).

Разумеется, функции библиотеки mysql ничего не знают о том, что и как подлючалось в библиотеке mysqli.

Либо ВСЁ mysqli_*, либо ВСЁ mysql_*. Но никак не в перемешку.

А в целом представленное - говнокод, типичный для жертв "курсов" и "видеоуроков", клепаемых ламерами, изображающими из себя "гуру PHP".

P.S. А ещё у тебя переменная $i не инициализирована.
Остальные ответы
Metotron Искусственный Интеллект (114872) 4 года назад
Вот такой порядок параметров у функции. А ты как передаёшь?
У тебя есть переменная $mysql_database?
Nikolay Kondaurov Мастер (2484) 4 года назад
SELECT * FROM result_table1 WHERE name='".$name."'"
такие запросы никто не пишет, есть такое как sql инъекция вот почитай
https://habr.com/ru/post/148151/
также забудь о библиотеках mysql и mysqli и переходи на PDO
http://phpfaq.ru/pdo
в запросах не указываешь кавычки, это не обязательно, но к правильному письму нужно приучаться сразу, простой пример выбоки с бд
$sql = $pdo->prepare("SELECT `ochki` FROM `My_BD`.`main_turnirs` WHERE `id_tur` = :id_tur AND `player` = :player");
if ($sql->execute(array(':id_tur' => $infa[0],':player' => $wite[$t][$d]))){
$row = $sql->fetch();
$wite_ochki=$row['ochki'];
} else {alert('error');}
Также ни один из своих запросов ты не проверяешь прошел он не прошел, обрати внимание как у меня в примере если запрос не прошел нет никакой выборки, у тебя же если запрос не пройдет, скрипт все равно будет пытаться что то делать вследствие чего будет много ошибок на ровном месте.
Ну а причину ошибки твоего кода, ребята выше детально описали...
Демиен Мыслитель (5538) 4 года назад
В цикле $i надо инициализировать, да и $i=$i+1 это плохо, есть $i++
----
$link = mysqli_connect("$mysql_host","$mysql_user","$mysql_password") or die("error connect");
mysqli_select_db($mysql_database,$link) or die("error db"); // Используем mysqli$q1 =

mysql_query("SELECT * FROM result_table1 WHERE name='".$name."'"); // А тут выполняем mysql

1. Мешанина недопустима
2. Твой код защищён настолько же, насколько банковский сейф, ключ от которого лежит под ковриком. https://www.php.net/manual/ru/security.database.sql-injection.php -- читай, даже спокойно вколю туда получение данных админа.

Не можешь нормально работать в процедурном интерфейсе - используй ООП. Читай https://www.php.net/manual/ru/book.pdo.php. Если хочешь ещё быстрее всё делать и не хочешь сам писать запросы (или просто лень самому работать с CRUD), то RedBeanPHP - https://redbeanphp.com/index.php
Похожие вопросы