açıklamasında verilen kod Windows sistem çalıştırılabilir mi?

3 Cevap php

Verilen kod Windows sisteminde çalıştırılabilir mi? o Linux komutları gibi görünüyor

   echo 'create database foo2' | mysql -uroot
    mysqldump --skip-triggers -uroot foo | mysql -uroot foo2

EDITED I am executing the following code but I am not getting what I expect..

<?php 
mysql_connect('localhost','root','********');
echo 'create database pranav_chk'. | mysql -u root
    mysqldump --skip-triggers -u root pranav_test | mysql -u root pranav_chk;
 ?>

3 Cevap

Kod üç komut satırı özellikleri kullanır:

  • Bir echo komutu
  • Borular aracılığıyla komutları bağlanması (| sembolü)
  • mysql komut satırı istemcisi

Her üç mevcuttur ve Windows ve Linux (onlar burada kullanılan konum derece) eşit işe, yani kod aslında taşınabilir.

Edit: kod kabuk çalıştırmak gerekiyor, sadece bir PHP komut dosyası içine koyamazsınız. Sen, exec() böyle bir şey kullanmak zorunda:

<?php
  exec("echo 'create database foo2' | mysql -uroot");
  exec("mysqldump --skip-triggers -uroot foo | mysql -uroot foo2");
?>

Bu PHP script için geçerlidir çünkü Ancak, daha önce mysql_connect() çağrı, size hiç bir faydası olmaz. Doğrudan komut satırı üzerinden kimlik doğrulaması yapmanız gerekecek. Alternatif olarak, bunu kullanabilir ve mysql_create_db() to replace the first exec() hattı.

Bu mysql ve mysqldump windows PATH değişkeninde varsayarak, evet çalışması gerekir. Eğer-u ile kökü arasında bir boşluk eklemek gerekir rağmen.

3 notları.

İlk olarak, PHP komut dosyası veritabanı bağlantısı dışında sistem komutu ile paylaşılmaz.

İkinci olarak, komut satırından şifre sağlamanız gerekir.

Üç, komutu çalıştırmak için exec fonksiyonunu kullanın.

Örneğin:

<?php
$PASSWORD="YOURPASSWORD";
exec("echo 'create database foo2' | mysql -u root -p $PASSWORD");
?>

Test edilmiş, ancak genel bir fikir thats.