#4 KIIV
vyřešeno tak, že sem sobory mysql.so a mysqli.so vybrakoval z balíčků ze starýho repa..
Příspěvky odeslané z IP adresy 46.167.243.–
tak jsem to zkusil z příkazový řádky:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/mysql.so' - File not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/mysqli.so' - File not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/pdo_mysql.so' - File not found in Unknown on line 0
vtip je v tom, že soubory ve složce jsou..
zdravím.. mám turris, musel jsem ho uvést od továrního nastavení a když jsem si pak instaloval znovu server, říkal jsem si, že zkusím už php 7čku.. tak to tam hodím.. všechno v pohodě, ale jakmile jsem se chtěl připojit do databáze, tak error.. no tak říkám seru na to, pudu na pětku.. tak instaluju session a tak.. a zase.. mysqli nic.. tak sem tam mrdl jak mysql, mysqli, pdo mysql.. a adminer: Není dostupné žádné z podporovaných PHP rozšíření (MySQLi, MySQL, PDO_MySQL).
odkaz na phpinfo https://underznaim.tk/phpinfo.php
všiměte si, že všechny ostatní extensiony se načetli.. dokonce i v seznamu ini souborů jsou mysql..
složku jsem ověřil.. soubory .so v ní skutečně jsou.. prostě vše je, kde má být.. ale nefaká to.. tuší někdo proč??
předem díky za odpovědi..
Tak neházelo mi to žádnou chybu prvně, tak sem zkusil to or die().. Já 'sem elektrikář, víš.. Měl sem stránky naprogramovaný klasicky v mysql, pak sem se dozvěděl o sql injection, tak sem googlil a narazil na mysqli stmt a tak se učím dále :-) A dnes sem se naučil, že v prepare dotazu nesměj bejt apostrofy
#12 Wee-Hool
Tak řešení je tak prosté.. BEZ ZNAKŮ '
$prvni = "%telefon%";
$druhy = "%telefon%";
$ppvcelkem = $mysqli->stmt_init();
$where = "WHERE (bezhacku LIKE ? or popis LIKE ?) AND active=1";
$sql = "SELECT * FROM katalog " . $where;
$ppvcelkem->prepare($sql) or die($mysqli->connect_error);
$ppvcelkem->bind_param("ss", $prvni, $druhy);
$ppvcelkem->execute();
$ppvcelkem->store_result();
$celkem = $ppvcelkem->num_rows;
echo "Celkem: " . $celkem;
$ppvcelkem->free_result();
$ppvcelkem->close();
$prvni = "%telefon%";
$druhy = "%telefon%";
$ppvcelkem = $mysqli->stmt_init();
$where = "WHERE (bezhacku LIKE '?' or popis LIKE '?') AND active='1'";
$sql = "SELECT * FROM katalog " . $where;
$ppvcelkem->prepare($sql) or die($mysqli->connect_error);
$ppvcelkem->bind_param("ss", $prvni, $druhy);
$ppvcelkem->execute();
$ppvcelkem->store_result();
$celkem = $ppvcelkem->num_rows;
echo "Celkem: " . $celkem;
$ppvcelkem->free_result();
$ppvcelkem->close();
Výstup:
Warning
: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in
/usr/share/www/vypis.php
on line
73
Celkem: 0
#4 Kit
Tak $bindpar[0] a $bindpar[1]
jako v tomhle případě jsou stejné, ale v případech, kdy vyhledávaný výraz obsahuje diakritiku, je jeden bez ní..
telefon je bez háčků a čárek, tak proto je to stejné, ale to snad nevadí, ne?? když to mám rozdělený do dvou proměnných..
Změnil sem jeden řádek:
$ppvcelkem->bind_param("ss",$bindpar[0],$bindpar[1]);
a dostal jsem chybu!!
mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
Ale mám dva variables i dva parametres, tak co to po mně chce??
Zdravíčko. Mám problém. Chci si zabezpečit dotaz do databáze a nějak.. to nejde :-)
$numpar = count($bindpar);
$param1 = "";
$param2 = "";
for($e=0;$e<$numpar;$e++) {
$param1 .= "s";
$param2 .= "%" . $bindpar[$e] . "%,";
}
$param2 = substr($param2, 0, -1);
$bind = "bind_param('".$param1."',".$param2.")";
$ppvcelkem = $mysqli->stmt_init();
echo $where;
$ppvcelkem->prepare("SELECT * FROM katalog $where");
//$ppvcelkem->bind_param("ss",$bindpar[0],$bindpar[1]);
$ppvcelkem->$bind;
$ppvcelkem->execute();
$ppvcelkem->store_result();
$celkem = $ppvcelkem->num_row;
echo "TU".$celkem;
$where a $bind se mi generuje.. v tomto případě, co mi nejde, jsou proměnné:
$where = WHERE (bezhacku LIKE ? or popis LIKE ?) AND active='1';
$bind = bind_param('ss',%telefon%,%telefon%);
Zobrazí se mi jen TU, ani 0 se nezobrazí, nic..
A v databázi jdou dvě položky odpovídající dotazu, pokud nepoužijï stmt, dotaz se vypíše..
Tak kde udělali soudruzi z NDR chybu??
Předem děkuji za odpověďi..
Zdravíčko.. Programoval jsem si stránky v php 5.5
Bohužel na openwrt je jen 5.4 a chyběla mi jedna funkce -> array_column
Tak sem si ji definoval:
if( !function_exists( 'array_column' ) ):
function array_column( array $input, $column_key, $index_key = null ) {
$result = array();
foreach( $input as $k => $v )
$result[ $index_key ? $v[ $index_key ] : $k ] = $v[ $column_key ];
return $result;
}
endif;
(našel sem na internetu)
Využívám to při
$key = array_search($sql_url, array_column($_SESSION['feed'], 'url'));
Bohužel.. Pokud mi to najde klíč na pozici 0, bere mi to jako NULL
takže když mám podmínku
if($key != "")
podmínka se nesplní.. v php 5.5 mi to fakalo
Pomůže mi někdo, prosím??