我将SilverStripe网站从3.0更新为3.2。但是,升级后,某些页面类型上的private void button5_Click(object sender, EventArgs e)
{
string MyConnectionString = "Server=localhost; Database=markcreations; Uid=root; Pwd=admin";
MySqlConnection connection = new MySqlConnection(MyConnectionString);
MySqlCommand cmd = new MySqlCommand();
cmd = connection.CreateCommand();
cmd.CommandText = "INSERT INTO `customer`(customername,businessname,mobilenumber) values('" + customerName.Text + "','" + businessName.Text + "','" + mobileNumber.Text + "')";
// Here is the Problem I want to extract Last_insert_id() and save it in variable.
String @last_id = cmd.CommandText = ("select Last_insert_id()");
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
try
{
cmd = connection.CreateCommand();
cmd.Parameters.AddWithValue("@jobName", row.Cells["Job Name"].Value);
cmd.Parameters.AddWithValue("@flexQuality", row.Cells["Flex Quality"].Value);
cmd.Parameters.AddWithValue("@sizeLength", row.Cells["Size Length"].Value);
cmd.Parameters.AddWithValue("@sizeWidth", row.Cells["Size Width"].Value);
cmd.Parameters.AddWithValue("@rate", row.Cells["Rate"].Value);
cmd.Parameters.AddWithValue("@quantity", row.Cells["Quantity"].Value);
cmd.CommandText = "INSERT INTO `order`(customerId,jobName, flexQuality, sizeLength, sizeWidth, rate, quantity)VALUES( @last_id,@jobName, @flexQuality, @sizeLength, @sizeWidth, @rate, @quantity)";
connection.Open(); // and in the above line i want to insert that variable as values @last_id
cmd.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
MessageBox.Show("Records inserted.");
}
不会显示相关文件。
Solution.php
UploadField
文件扩展名
public static $many_many = array (
"LinkedDocuments" => "File"
);
public function getCMSFields() {
$fields = parent::getCMSFields();
if ($this->ID != 0) {
$fields->addFieldToTab("Root.Documents", UploadField::create("LinkedDocuments")->setFolderName("assets/solutions/" . $this->URLSegment));
}
return $fields;
}
class SolutionFileExtenstion extends DataExtension {
private static $belongs_many_many = array('Solutions' => 'Solution');
}
表似乎没问题。这些文件仍在前端工作。唯一的问题是Solution_LinkedDocuments
为空,因此重新保存页面会删除链接文件。
答案 0 :(得分:1)
除此之外,不能快速发现其他任何错误:
public static $many_many = array (
"LinkedDocuments" => "File"
);
3.2包含重大更改,因为以前的版本没有遵循语义版本。
在3.1上,静态变量需要声明为私有静态才能正常工作
private static $many_many = array (
"LinkedDocuments" => "File"
);
来自文档:
" SiteTree和DataObject中定义的大多数静态都会受到影响,例如:$ db,$ has_one,$ has_many,$ many_many,$ defaults,$ allowed_children。对于ContentController中定义的静态也是如此,例如$ allowed_actions"
还要查看更改日志,直到3.1.9和https://docs.silverstripe.org/en/3.2/upgrading/。
这至少是你遇到的一个问题。此外,您可能正在使用许多已弃用的功能,因此您需要注意它们。就个人而言,我还没有在3.2上运行任何东西,并且在UploadField使用情况上看不到任何直接错误,但我目前无法对此进行测试。
无论如何,你应该看到因错误的函数而出现的PHP错误,尤其是私有变量和公共变量的变化。
显然你还没有,所以我建议你将开发服务器中的站点设置为开发模式,并将PHP错误级别设置为E_ALL和display_errors on。
或者直接查看服务器上的PHP错误日志。
答案 1 :(得分:0)
Problme原来是一个腐败的数据库表。不知道为什么链接仍然在前端工作,但我写了一个任务,根据文件名重新链接文件,从DB的升级前版本复制并修复它。