if (!$mysqli->more_results()) {
if ($mysqli->multi_query($toadd)) {
do {
echo 'Insert ' . $i . ' Error: ' . $mysqli->error . '<br />';
} while ($mysqli->next_result());
}
если не трудно, приведите свой пример.
include 'safemysql.class.php';
$db = new safeMysql();
$sql = "INSERT INTO btc_charts_live SET mark = 'btce', date=NOW(), ?u";
$db->query("INSERT INTO btc_charts_live SET ?u", $btc);
если данные атрибутов находятся сериализованные в базе в таблице option,
$stmt = $db->prepare("SELECT NULL, 1, 's'");
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();
var_dump($row);
array(3) {
["NULL"]=>
NULL
[1]=>
int(1)
["s"]=>
string(1) "s"
}
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$res = $link->query($query);
if (!$res) throw new Exception($link->error() ." [$query]");
те, которые действительно считали строки - это требуется и использовалось не часто, по-этому было благополучно за полдня переписано вручную на fetchAll + foreach
те, которые проверяли, есть ли строки в результирующем наборе (таких несколько сотен).
все вхождения mysql_num_rows
А вы документацию читаете? Для select запросов не работает.
Все функции работы с БД были успешно переписаны за пару дней на PDO'шные путем замены имен функций регулярными выражениями по проекту
CREATE TABLE table_name
$data = $db->getAll("SELECT * FROM t WHERE id IN (?a)", $params);
а для второго$sql = "SELECT user_id,password FROM user WHERE email = ?s";
$row = $db->getRow($sql, $email);
2. if($result) не нужно было делать и раньше. Если база даёт сбой - это гарантированный фейл, и надо аварийно завершать работу. А не писать "что-то пошло не так" и продолжать долбить неработающую базу запросами.mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
и после этого ловить ошибки в error handler-е или блоке catch.foreach($array_1 as $id => $chtoto) {
$stmt->execute([$id, $chtoto, $array_2[$i],$array_3[$i]]);
}
Как вариант, можно сформировать мультиинсерт опять же с помощью safeMysql:$ins = array();
foreach($array_1 as $id => $chtoto) {
$ins[] = $db->parse("(?i,?i,?i,?i)",$id, $chtoto, $array_2[$i],$array_3[$i]);
}
$instr = implode(",",$ins);
$db->query("INSERT INTO `MyTable` (`a`, `b`, `c`, `d`) VALUES ?p", $instr);
mysql_set_charset('кодировка');
ALTER TABLE tasks ADD INDEX (status,price);
Не очень понятны эти идеи про разность индексов. Да, индекс по четырем байтам целочисленного поля получится меньше и за счет этого быстрее, чем индекс из первых, скажем, 20-и символов текстового. Но разница будет не настолько значительная.
Для компьютера и число и строка - это набор байт. Что конкретно в эти байты записано - ему всё равно. Поиск по упорядоченному набору байт будет производиться одинаково.
Не стоит заранее переживать за производительность. От этого одни проблемы.