Bir diziden bir MYSQL veritabanına URL kaydetmek nasıl

2 Cevap php

Ne bir MYSQL veritabanına bir URL veya sembolleri kaydetmek için en iyi yoldur.

I'v seen this being used "{$htmlOutputArray[1]}" and then else where this "$htmlOutputArray[1]" and some other places do what i'v done below... but which is the best?

Şimdiye kadar var: (örnek kod)

$html = "034251\nhttp://stackoverflow.com/questions/ask"
$htmlOutputArray = explode("\n", "$html");

$htmlOutput = $htmlOutputArray[0];
$postIDOutput = $htmlOutputArray[1];
$con = mysql_connect('localhost', 'user', 'pass') or die('Could not connect: ' . mysql_error());
#echo 'Connected successfully';
mysql_select_db("dbName", $con);
mysql_query("UPDATE tableName SET PostidINT='$postIDOutput', URLofPostTXT='$htmlOutput' WHERE id='$unID'");
mysql_close($con);

2 Cevap

Öncelikle size SQL injection tehlikeleri içine bakmalı ve bunu nasıl önleyebilirsiniz.

Burada bunu bir şekilde ve güvenli bir sürümü hem de bulunuyor.

mysql_select_db("dbName", $con);

$sql = sprintf("UPDATE tableName SET PostidINT=%d, URLofPostTXT='%s' WHERE id=%d",
     mysql_real_escape_string($htmlOutputArray[1]), 
     mysql_real_escape_string($htmlOutputArray[0]), 
     mysql_real_escape_string($unID));

mysql_query($sql);

mysql_close($con);

Ne mysql_real_escape_string() yapıyor veritabanına girilen güvenli olmayan karakterleri önlemektir.

Örneğin, yalnızca sayı PostidINT ve id değişkenleri girilmiş olur, böylece ne sprintf() ne yapıyor, sizin dize biçimlendirme.

Ben hazırlanmış tablolar (ve mysqli'nin) için oy istiyorum:

$connection = new mysqli("localhost", "user", "pass", "db");
$statement = $connection->prepare("UPDATE tableName SET PostidINT=?, URLofPostTXT=? WHERE id=?");
$statement->bind_param("i", $postIDOutput);
$statement->bind_param("s", $htmlOutput);
$statement->bind_param("i", $unID);
$statement->execute();