Я уже давно задавал этот вопрос, но у вас было больше вопросов, а ответов - нет. Поэтому распишу поподробнее. Суть проблемы: Мне нужно создавать записи в БД путем парсинга страницы на phpMyAdmin - может проблема где-то там, не в этом суть, делаю я это таким образом:
$stmt = $link->prepare("INSERT INTO chat VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('sssssssssss', $data, $frequency, $snr, $drift, $grid, $dbm, $w, $by, $loc, $km, $mi);
Далее, когда загружается сайт выводится ошибка:
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in D:\open_server_5_3_0_ultimate\OSPanel\domains\localhost\index.php:72 Stack trace: #0 {main} thrown in D:\open_server_5_3_0_ultimate\OSPanel\domains\localhost\index.php on line 72
И эта ошибка исчезает если оставить три или меньше любых переменных. Приведу весь мой безобразный код на обозрение - мол, скрывать мне нечего:
<?php
$code = file_get_contents('http://wsprnet.org/olddb?mode=html&band=all&limit=5&findcall=UB8SFY&findreporter=&sort=date');
preg_match_all('/<table(.*?)>(.*?)<\\/table>/is', $code, $table);
$table = $table[0][2];
preg_match_all('/<td.*?> (.*?) <\\/td>/is', $table, $finalT);
$finalT = $finalT[0];
echo "<pre>";
print_r($table);
echo "</pre>";
echo "<pre>";
print_r($finalT);
echo "</pre>";
$reg = '/<td.*?> (.*?) <\\/td>/is';
$str = $finalT[0];
preg_match($reg, $str, $finalTime);
$data = $finalTime[1];
$str = $finalT[1];
preg_match($reg, $str, $finalTime);
$call = $finalTime[1];
$str = $finalT[2];
preg_match($reg, $str, $finalTime);
$frequency = $finalTime[1];
$str = $finalT[3];
preg_match($reg, $str, $finalTime);
$snr = $finalTime[1];
$str = $finalT[4];
preg_match($reg, $str, $finalTime);
$drift = $finalTime[1];
$str = $finalT[5];
preg_match($reg, $str, $finalTime);
$grid = $finalTime[1];
$str = $finalT[6];
preg_match($reg, $str, $finalTime);
$dbm = $finalTime[1];
$str = $finalT[7];
preg_match($reg, $str, $finalTime);
$w = $finalTime[1];
$str = $finalT[8];
preg_match($reg, $str, $finalTime);
$by = $finalTime[1];
$str = $finalT[9];
preg_match($reg, $str, $finalTime);
$loc = $finalTime[1];
$str = $finalT[10];
preg_match($reg, $str, $finalTime);
$km = $finalTime[1];
$str = $finalT[11];
preg_match($reg, $str, $finalTime);
$mi = $finalTime[1];
echo($data . ', '); echo($call . ', '); echo($frequency . ', '); echo($snr . ', '); echo($drift . ', '); echo($grid) . ', '; echo($dbm . ', '); echo($w . ', '); echo($by . ', '); echo($loc . ', '); echo($km . ', '); echo($mi . ', ');
$link = mysqli_connect("127.0.0.1:3306", "mysql", "mysql", "table");
if (!$link) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
$stmt = $link->prepare("INSERT INTO chat VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('sssssssssss', $data, $frequency, $snr, $drift, $grid, $dbm, $w, $by, $loc, $km, $mi);
$stmt->execute();
$stmt->close();
$conn->close();
?>
Заранее спасибо.
$link = new mysqli('localhost', 'my_user', 'my_password', 'my_db');. Или же, если желаете оставаться в процедурном стиле - то$query = mysqli_prepare($link, "своя строка запроса"); mysqli_stmt_bind_param($query, 'sssd', $data1, $data2...);, гдеsssd- тип значений (длина строки типов, должна соответствовать количеству параметров). Будьте внимательнее! – Владислав Jun 07 '19 at 16:14