Ho alcune vecchie query mysql_query nel mio codice che voglio convertire in PDO ma sto faticando a mettermi al lavoro.PHP che modifica la vecchia mysql_query in PDO
mio codice originale era:
mysql_query("UPDATE people SET price='$price', contact='$contact', fname='$fname', lname='$lname' WHERE id='$id' AND username='$username' ")
or die(mysql_error());
Ora sto cercando:
$sql = "UPDATE people SET price='$price', contact='$contact', fname='$fname', lname='$lname' WHERE id='$id' AND username='$username'";
$q = $conn->query($sql) or die("failed!");
ma non riesco a farlo funzionare, tutte le idee?
codice aggiornato:
$conn = new PDO("mysql:host=$host;dbname=$db",$user,$pass);
// check if the form has been submitted. If it has, process the form and save it to the database
if (isset($_POST['submit']))
{
// confirm that the 'id' value is a valid integer before getting the form data
if (is_numeric($_POST['id']))
{
// get form data, making sure it is valid
$id = $_POST['id'];
$fname = mysql_real_escape_string(htmlspecialchars($_POST['fname']));
$lname = mysql_real_escape_string(htmlspecialchars($_POST['lname']));
$contact = mysql_real_escape_string(htmlspecialchars($_POST['contact']));
$price = mysql_real_escape_string(htmlspecialchars($_POST['price']));
// check that firstname/lastname fields are both filled in
if ($fname == '' || $lname == '' || $contact == '' || $price == '')
{
// generate error message
$error = 'ERROR: Please fill in all required fields!';
//error, display form
renderForm($id, $fname, $lname, $contact, $price, $error);
}
else
{
// save the data to the database
$username = $_SESSION['username'];
$query = "UPDATE people
SET price=?,
contact=?,
fname=?,
lname=?
WHERE id=? AND
username=?";
$stmt = $db->prepare($query);
$stmt->bindParam(1, $price);
$stmt->bindParam(2, $contact);
$stmt->bindParam(3, $fname);
$stmt->bindParam(4, $lname);
$stmt->bindParam(5, $id);
$stmt->bindParam(6, $username);
$stmt->execute();
// once saved, redirect back to the view page
header("Location: view.php");
}
Se si passa a PDO, che è una grande idea, assicurarsi di utilizzare segnaposto SQL. Il tuo vecchio esempio è tipico di 'mysql_query' dove è probabilmente vulnerabile a gravi problemi di SQL injection. Come sempre, quali errori stai ottenendo? "Non riesco a farlo funzionare" non è una diagnosi utile. – tadman
Nonostante i miglioramenti, il metodo dovrebbe funzionare. Puoi mostrare il codice completo, da dove inizierai il comando '$ conn'? – Starx
scusa avrei dovuto essere più specifico, ho un modulo di modifica che consente agli utenti di modificare gli annunci che hanno pubblicato, quando fanno clic su un annuncio per modificarlo viene visualizzato il modulo e i valori precedenti sono già stati aggiunti al caselle di testo dal mio database. Funziona ancora bene (usa un'altra query), ora quando provo a sommare il modulo viene fuori l'errore "mysql_real_escape_string" che a mio parere suggerisce che il modulo sommi dati vuoti per così dire? quindi non sono sicuro che la mia query PDO sia errata perché funzionava bene con il vecchio codice mysql_query, grazie per il tuo aiuto !! – neeko