http___programlama.venus.gen.tr_kategori_asp_1.xml
1.1 2.1 2.2 3.1 4.1 5.1 5.2 6.1 7.1 8.1 10.1 10.2 11.1 12.1 13.1 15.1 16.1 16.2 17.1 17.2 18.1 19.1 20.1 21.1 24.1 25.1 26.1 27.1 29.1 29.2 31.1 32.1 33.1 35.1 35.2 35.3 36.1
PHP Mysql to Mysqli mistakesConverting from PHP Mysql statements to Mysqli statements I found myself making certain mistakes. While the Mysqli procedural style resembles the mysql style, yet if you simply convert mysql_ to mysqli_ things won't work that easily ! I will try to list the errors and the actions I took for shifting to PHP procedural style mysqli statement. mysqli_query expects parameter 1 to be mysqliError "mysqli_query() expects parameter 1 to be mysqli" was thrown and made me waste 2 days finding this silly mistake. When we use mysql_query() we simply place the query string first followed by the link identifier(connection) But when using mysqli_query(), the link comes first followed by the query string. Simple PHP Mysqli code in procedural style<?php $link = mysql_connect('localhost','user','password') or die(mysql_error()); $q= mysql_query("Query string",$link) or die(mysql_error()); var_dump(mysql_fetch_array ($q)); Please note that I use the Database. Table format in my query strings and hence the Database details are omitted in Mysql/Mysqli connect.<?php $link = mysqli_connect('localhost','user','password') or die(mysqli_error()); $q= mysqli_query($link,"Query string") or die(mysqli_error()); var_dump(mysqli_fetch_array ($q)); mysqli_real_escape_string expects exactly 2 parametersmysqli_real_escape_string expects exactly 2 parameters When migrating from mysql to mysqli, if you were using mysql_real_escape_string for escaping the data then you need to add an additional parameter, the link identifier(connection) to mysqli_real_escape_string else Error "mysqli_real_escape_string expects exactly 2 parameters 1 given" will result. so simple PHP Mysql Code But when using mysqli_real_escape_string(), the link comes first followed by the string to escape. Simple PHP Mysqli code in procedural style<?php $link = mysql_connect('localhost','user','password') or die(mysql_error()); $string="string to escape"; $escaped_string=mysql_real_escape_string($string) or die(mysql_error()); echo $escaped_string; $link = mysqli_connect('localhost','user','password') or die(mysqli_error()); $string="string to escape"; $escaped_string=mysqli_real_escape_string($link,$string) or die(mysqli_error()); echo $escaped_string; mysqli_affected_rows() expects exactly 1 parameterIn mysql we simply add mysql_affected_rows() with or without any link identifier(connection) but mysqli wants link identifier as a parameter. Simple PHP Mysqli code in procedural style $link = mysqli_connect('localhost','user','password') or die(mysqli_error()); $q= mysqli_query($link,"Update Query string") or die(mysqli_error()); if(mysqli_affected_rows($link) !==0){echo 'Row Updated';} Do not mix mysqli and mysql statementsWhile it is tempting to mix mysql and mysqli statements just to make your scripts work, do not do that! When you mix both then you are making it more difficult to track errors. The biggest disadvantage of using mysql is that PHP developers may later remove complete support for mysql statements, rather they recommend themselves to switch from mysql to mysqli. For more posts like these visit www.internet-programs.com/forum/
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1
Bu yazımızda MySQL veritabanına ASP ve PHP’de nasıl bağlantı sağlanacağımızı ve veri çekebileceğimizi öğreneceğiz. Öncelikle ASP ile başlayalım. ASP’de bir MySQL bağlantısı için ADODB objesinden yararlanırız. Set Baglanti = Server.CreateObject("ADODB.Connection") Baglanti.Open "Driver={MySQL ODBC 3.51 Driver};Server=sunucu_adres;Database=db_adi;Port=3306;Uid=kullanici;Password=sifre;" Set Kayitlar = Baglanti.Execute( "SELECT * FROM tablo_adi ORDER BY id DESC LIMIT 0, 10;" ) Do While Not Kayitlar.Eof Response.Write Kayitlar("alinacak_veri") + " " Kayitlar.MoveNext Loop Baglanti.Close Yukarıda geçen “Baglanti” ve “Kayitlar” birer değişken olup. Biri bize bağlantımız hakkında bilgi verir, diğeri ise Baglanti.Execute() ile istediğimiz kayıtları barındırır. Bağlantıyı Baglanti.Close() ile kapatmayı unutmayın. Yukarıda yer alan Kayitlar.EOF bir mantıksal değer olup ancak kayıt listelemeleri bittikten sonra true (doğru) karşılığını verir. Kayitlar.MoveNext ise bir sonraki kaydı istemek için kullanacağımız koddur. Yukarıda bağlantıyı sağlarken kullanılan sunucu_adresi, db_adi, kullanıcı, şifre bilgilerini doğru yazmazsanız bağlantı sağlanamaz. Bunlar MySQL’e bağlantı için gereklidir. Peki PHP’de MySQL’e nasıl bağlanırız? Yukarıda yazdığımız ASP kodunu birebir PHP’ye dönüştürecek olursak aşağıdaki gibi bir kodlamaya gideriz. mysql_connect('sunucu_adresi','kullanici','sifre'); mysql_select_db('db_adi'); $sorgu = mysql_query( "SELECT * FROM tablo_adi ORDER BY id DESC LIMIT 0, 10;" ); while( $kayitlar = mysql_fetch_array( $sorgu ) ) echo $kayitlar['alinacak_veri'] . ' '; mysql_close(); Yukarıda göreceğimiz gibi bağlantımızı mysql_connect() ile sağlıyoruz. Parantez içine sırasıyla sunucu adresi, kullanıcı adı ve şifresi yazılır. mysql_select_db() ile hangi veritabanını kullanacağımızı seçtikten sonra bağlantıyı sağlamış oluruz. Eğer birden fazla veritabanı ile işlem yapacaksanız mysql_select_db’den sonra bir de bağlantı için atayacağınız bir değişken kullanmalısınız. Sorgu cümlemizi mysql_query() komutuyla yazdıktan sonra kayıtları mysql_fetch_array ya da mysql_fetch_assoc ile alırız. Sıralama için kolaylık olması açısından while() döngüsü kullandık. Burada başka bir değişken olarak kayıtların depolanacağı arraylist (dize) yi belirttik ($kayitlar) ve finalde mysql_close() ile veritabanı bağlantısını kapattık. (NOT: Bir PHP belgesi mutlaka “ ” ile biterken, ASP belgesi “ ” ile biter. Kodlar ile ilgili alıştırma yaparken bunu dikkate almayı unutmayın.