echo json_encode($db->getAll("SELECT * FROM table"));
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'шные путем замены имен функций регулярными выражениями по проекту
а как быть с конструкцией try-catch?
class DB
{
protected static $instance = null;
final private function __construct() {}
final private function __clone() {}
public static function instance()
{
if (self::$instance === null)
{
$dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset='.DB_CHARSET;
self::$instance = new PDO($dsn, DB_USER, DB_PASS);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->query("SET NAMES ".DB_CHARSET);
}
return self::$instance;
}
public static function __callStatic($method, $args) {
return call_user_func_array(array(self::instance(), $method), $args);
}
}
$stmt = DB::prepare($query);
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);
Если речь именно о компиляции, без запуска, то как-то так?
<?
$commands = [
'ls' => 'ls -la',
'basic' => '/path/to/basic param1 param2',
'java' => '/path/to/java param param',
];
if (isset($_FILES['file']) && !$_FILES['file']['error'] && isset($commands[$_POST['lang']]))
{
$comm = $commands[$_POST['lang']];
$file = $_FILES['file']['tmp_name'];
echo "<pre>";
echo `$comm $file 2>&1`;
echo "</pre>";
}
?>
<form enctype="multipart/form-data" method="POST">
<select name="lang">
<?php foreach ($commands as $key => $void):?>
<option><?=$key?></option>
<?php endforeach ?>
</select><input name="file" type="file" /><input type="submit" /></form>