Не удается перейти на веб-сайт, поскольку данные не вставляются в базу данных

Мне нужно разобраться с работой, проделанной другом. Кажется, что нет ошибки, так как я могу запустить сайт без проблем. При выборе варианта в раскрывающемся списке и нажатии «Добавить» он не вставляет данные в SQL и не возвращает их на веб-сайт. Я хочу устранить неполадки, просто вставив данные в базу данных и отобразив их на веб-сайте. База данных и таблица не содержат ошибок, поскольку я много раз пытался их переделать, но безуспешно.

Я не уверен, что не так с кодом.

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form") && ($_POST['InputSwitch'] != "") && ($_POST['InputFromPort'] != "") && ($_POST['InputToPort'] != "")) {

//Start of Add Flow
$flow = '{"flow":{"cookie":"0x2032195","priority": 30000, "idle_timeout": 0, "hard_timeout": 0,"match":[{"in_port":'.$_POST["InputFromPort"].'}],"actions":[{"output":'.$_POST["InputToPort"].'}]}}';

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $flow);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_URL,"https://127.0.0.1:8443/sdn/v2.0/of/datapaths/".$_POST['InputSwitch']."/flows");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result3 = curl_exec ($curl);
curl_close ($curl);
//End of Add Flow

//Start of Add Flow
$flow2 = '{"flow":{"cookie":"0x2032195","priority": 30000, "idle_timeout": 0, "hard_timeout": 0,"match":[{"in_port":'.$_POST["InputToPort"].'}],"actions":[{"output":'.$_POST["InputFromPort"].'}]}}';

$curl2 = curl_init();
curl_setopt($curl2, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl2, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl2, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl2, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl2, CURLOPT_POSTFIELDS, $flow2);
curl_setopt($curl2, CURLOPT_HEADER, true);
curl_setopt($curl2, CURLOPT_URL,"https://127.0.0.1:8443/sdn/v2.0/of/datapaths/".$_POST['InputSwitch']."/flows");
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);

$result4 = curl_exec ($curl2);
curl_close ($curl2);
//End of Add Flow

$query = "SELECT * FROM port_switching";
$result = mysql_query($query);
$i=0;
while($row = mysql_fetch_array($result))
{
$table[$i]=$row['switching_id'];
$table[$i+1]=$row['switch'];
$table[$i+2]=$row['port_in'];
$table[$i+3]=$row['port_out'];
$i+=4;
}
if((array_search($_POST['InputFromPort'], $table)) != false)
{
$insertSQL = sprintf("UPDATE port_switching SET port_in=%s WHERE port_in=%s",
GetSQLValueString($_POST['InputFromPort'], "text"),
GetSQLValueString($_POST['InputFromPort'], "text"));
mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
}$insertSQL = sprintf("INSERT INTO port_switching (switch, port_in, port_out) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['InputSwitch'], "text"),
GetSQLValueString($_POST['InputFromPort'], "text"),
GetSQLValueString($_POST['InputToPort'], "text"));

$insertSQL2 = sprintf("INSERT INTO port_switching (switch, port_in, port_out) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['InputSwitch'], "text"),
GetSQLValueString($_POST['InputToPort'], "text"),
GetSQLValueString($_POST['InputFromPort'], "text"));

mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
$Result2 = mysql_query($insertSQL2, $localhost) or die(mysql_error());

Попытался поместить echo / print здесь после $ Result2, и это вернуло ошибку разбора (неожиданное t_echo / print). Он сказал не добавлять больше кода отсюда, потому что это сделано.

0

Решение

http://php.net/manual/en/function.mysql-query.php

цитата: смешанная mysql_query (строка $ query [, ресурс $ link_identifier = NULL])

$ localhost является идентификатором ссылки? Я думаю, это не ..

Если нет, просто удалите этот аргумент и используйте mysql_query (), который принимает только 1 аргумент (запрос). То же самое с функцией select_db (). Предполагая, что у вас есть только 1 соединение mysql (link_identifier), оно будет использоваться по умолчанию.

1

Другие решения

Я думаю, что вы можете использовать один isset () для кнопки отправки вместо нескольких isset () со значениями публикации. Как только вы добавляете данные, вы проверяли базу данных, чтобы убедиться, что значения добавлены. Потому что иногда, хотя скрипт не показывает какие-либо ошибок, вставки значений можно избежать. И попробуйте включить отображение ошибок, добавив это в скрипт.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
0

По вопросам рекламы [email protected]