Пара вещей. Сначала у вас есть ненужный цикл. Попробуйте:
while (list($name) = mysql_fetch_row($clientresult)) {
$temp[] = $name;
}
Чтобы создать свой временный массив.
Во-вторых, части предложения IN
являются строками, поэтому, когда вы взорваетесь, вам нужно заключить каждый значение в кавычках:
$thelist = "'". implode("','", $temp) . "'";
Наконец, в вашем запросе вы передаете $row
в предложение IN
, вы должны передавать $thelist
:
$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY date desc";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);
Так что вообще:
$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";
$clientresult = mysql_query($query1, $connection) or trigger_error("SQL", E_USER_ERROR);
while (list($name) = mysql_fetch_row($clientresult)) {
$temp[] = $name;
}
$thelist = "'". implode("','", $temp) . "'";
$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY date desc";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);
XDocument doc = XDocument.Parse(xmlString);
string indented = doc.ToString();
Из здесь
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
// Save the document to a file and auto-indent the output.
XmlTextWriter writer = new XmlTextWriter("data.xml",null);
writer.Formatting = Formatting.Indented;
doc.Save(writer);
Еще один вкус того же супа ...; -)
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
xw.Formatting = Formatting.Indented;
doc.WriteTo(xw);
Console.WriteLine(sw.ToString());
Редактировать: спасибо Джону Сондерсу . Вот версия, которая должна лучше соответствовать Создание средств записи XML в MSDN .
using System;
using System.Text;
using System.Xml;
using System.Xml.Linq;
class Program
{
static void Main(string[] args)
{
XDocument doc = new XDocument(
new XComment("This is a comment"),
new XElement("Root",
new XElement("Child1", "data1"),
new XElement("Child2", "data2")
)
);
var builder = new StringBuilder();
var settings = new XmlWriterSettings()
{
Indent = true
};
using (var writer = XmlWriter.Create(builder, settings))
{
doc.WriteTo(writer);
}
Console.WriteLine(builder.ToString());
}
}
Чтобы создать строку с помощью XDocument (а не XmlDocument), вы можете использование:
XDocument doc = new XDocument(
new XComment("This is a comment"),
new XElement("Root",
new XElement("Child1", "data1"),
new XElement("Child2", "data2")
)
);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlTextWriter.Create(sb, settings)) {
doc.WriteTo(writer);
writer.Flush();
}
string outputXml = sb.ToString();
Изменить: Обновлено для использования XmlWriter.Create
и StringBuilder
и хорошей формы ( с использованием
).