Mam taki oto kod:
$mysql_host = 'localhost';
$port = '3307';
$username = 'fryzjerka';
$password = 'XXXXXXXXXX';
$database = 'fryzjerka';
try {
$pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//---------------------------------
//--- sprawdzenie czy user nie wysyĹa opinii zbyt wczesnie, na podstawie adresu ip
//--- $pdo = zmienna pdo, $time = czas po jakim user moze wysĹaÄ opinie od ostatniego wysyĹania (w sekundach)
function wal($pdo, $time)
{
$wal_ = "true";
$squery = 'SELECT data, ip FROM opinie WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"';
$stmt = $pdo->query( $squery );
foreach($stmt as $row)
{
$ts_x = time();
$data_sql = $row['data'] + $time;
if( $row['ip'] === $_SERVER['REMOTE_ADDR'] && $data_sql >= $ts_x ) $wal_ = "false";
}
$stmt->closeCursor();
return $wal_;
}
//--- sprawdzanie czy klikniÄto submit na formularzu
if ( isset($_POST['opinia']) && isset($_POST['ocena']) )
{
if ( wal($pdo, "60") == "true" )
{
$query = 'INSERT INTO `fryzjerka`.`opinie` (`opinia`, `ip`, `data`, `ocena`) VALUES (?,?,?,?)';
$stmt = $pdo->prepare($query);
$stmt->bindParam(1,$_POST["tresc"], \PDO::PARAM_STR);
$stmt->bindParam(2,$_SERVER["REMOTE_ADDR"], \PDO::PARAM_STR);
$stmt->bindParam(3,(new DateTime())->getTimestamp(), \PDO::PARAM_INT);
$stmt->bindParam(4,$_POST["ocena"], \PDO::PARAM_INT);
$stmt->execute();
$stmt->closeCursor();
}
}
}
catch(PDOException $e)
{
echo 'PoĹÄ
czenie nie mogĹo zostaÄ utworzone.<br />';
}
Czy bindparam powinienem używać tylko do zapytań gdzie zmieniam coś w bazie czy lepiej do wszystkich zapytań?
Czy powinienem zamykać jakoś otworzone połączenie z bazą czy php jakoś sam je zamyka
Czy muszę używać $stmt->closeCursor(); ?