PHP phpMyAdmin vs

2 Cevap php

Ben% 100 çalışıyor phpmyadmin yürütmek bu kod var

Create Temporary Table Searches  ( id int, dt datetime);
Create Temporary Table Searches1 ( id int, dt datetime, count int);

insert into Searches(id, dt) select a.id, now() from tblSavedSearches a;

insert into Searches1(id, dt, count)
select  
    b.savedSearchesId,
    (select c.dt from tblSavedSearchesDetails c where b.savedSearchesId = c.savedSearchesId order by c.dt desc limit 1) as 'dt', 
    count(b.savedSearchesId) as 'cnt'
from tblSavedSearchesDetails b
group by  b.savedSearchesId;

insert into tblSavedSearchResults(savedSearchId,DtSearched,isEnabled)
select id,now(),0 from Searches where not id in (select savedSearchId from tblSavedSearchResults);

update     tblSavedSearchResults
inner join Searches1 on tblSavedSearchResults.savedSearchId = Searches1.id    
Set        tblSavedSearchResults.DtSearched = Searches1.dt, tblSavedSearchResults.isEnabled = 1;

Bir hata üretir aşağıdaki gibi php aynı kodu koymak Ancak ne zaman

$dba = DbConnect::CreateDbaInstance(); 
$query = "";

$query.="Create Temporary Table Searches  ( id int, dt datetime); ";
$query.="Create Temporary Table Searches1 ( id int, dt datetime, count int); ";

$query.="insert into Searches(id, dt) select a.id, now() from tblSavedSearches a; ";

$query.="insert into Searches1(id, dt, count) ";
$query.="select ";  
$query.="    b.savedSearchesId, ";
$query.="    (select c.dt from tblSavedSearchesDetails c where b.savedSearchesId = c.savedSearchesId order by c.dt desc limit 1) as 'dt', ";
$query.="    count(b.savedSearchesId) as 'cnt' ";
$query.="from tblSavedSearchesDetails b ";
$query.="group by  b.savedSearchesId; ";

$query.="insert into tblSavedSearchResults(savedSearchId,DtSearched,isEnabled) ";
$query.="select id,now(),0 from Searches where not id in (select savedSearchId from tblSavedSearchResults); ";

$query.="update     tblSavedSearchResults ";
$query.="inner join Searches1 on tblSavedSearchResults.savedSearchId = Searches1.id ";    
$query.="Set        tblSavedSearchResults.DtSearched = Searches1.dt, tblSavedSearchResults.isEnabled = 1; ";

$dba->DbQuery($query) or die(mysql_error());      

Ben şu hatayı alıyorum

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Create Temporary Table Searches1 ( id int, dt datetime, count int) insert into S' at line 1

Lütfen birisi bana bu konuda yardımcı olabilir eğer ...

Teşekkürler

2 Cevap

Da $dba->DbQuery($query) yöntem aslında kullanıyorsa mysql_query (Which I suppose it does, as you are using mysql_error) , then, you cannot execute more than one query per call (quoting),

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.


You'll have to either :

  • separate your queries, and call mysql_query once for each query
    • Burada oldukça kolay olmalıdır: yerine $query içine tüm sorguları concatening arasında, sadece onları tek tek yürütmek.
  • veya mysql_* kullanarak durdurmak ve MySQLi , hangi bir mysqli_multi_query fonksiyonu sağlar ile çalışmaya başlamak

Sadece PHP ile bir anda sorgular birini yürütebilirsiniz. $dba->DbQuery() yeni sorgu başına yerine bir kez arayın.