Я могу вставлять и выбирать из базы данных mysql без каких-либо проблем, но не в состоянии обновлять записи.инструкция по обновлению не работает (регулярный оператор, а также подготовленный оператор)
Первоначально я использовал mysqli_query без каких-либо результатов или ошибок. Позже я попробовал подготовленное заявление безрезультатно.
Sharing мой код здесь:
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'xxxx');
define('DB_PASSWORD', 'xxxx');
define('DB_DATABASE', 'xxxx');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
//the function
function SaveLineItem() {
$sql = "update lineitems set deliverycost=? ";
$tdetail = "";
if($_POST['tdetail']){
$sql .= ",tracking_details=?" ;
$tdetail = $_POST['tdetail'];
}
$sql .= " where id=?";
$dc = $_POST['dc'];
$lineItemId = $_POST['lineItemId'];
echo $sql;
$stmt = mysqli_prepare($db, $sql);
echo "<br>after prepare statement";
if($tdetail<>""){
mysqli_stmt_bind_param($stmt,"isi",$dc1,$tdetail1,$lineItemId1);
}else {
mysqli_stmt_bind_param($stmt,"ii",$dc1,$lineItemId1);
}
echo "<br>after binding";
$dc1 = $dc;
if($tdetail<>""){
$tdetail1 = $tdetail;
echo "<br>detail param bound";
}
$lineItemId1 = $lineItemId;
mysqli_stmt_execute($stmt);
echo "<br>statement executed";
//header("location:../welcome.php");
}
Выход:
update lineitems set deliverycost=? ,tracking_details=? where id=?
after prepare statement
after binding
detail param bound
statement executed
Но по проверке таблицы нет обновлений. Пытаясь со вчерашнего дня, чего мне не хватает?
Обновление: Этот код изначально разрабатывался в Windows, но позже я решил продолжить работу в Ubuntu 16.04. Кажется, в ubuntu даже вставка не работает. Может ли это быть проблемой безопасности, связанной с ubuntu?
использовать 'mysqli_stmt_affected_rows', чтобы проверить количество строк, на которые повлиял ваш оператор обновления. И имейте в виду, что ваш код может не выходить из части запроса, если он выводится правильно. Проверьте, какие параметры передаются и их ценность. Возможно, теперь результаты обновления происходят из-за ошибки в привязке. Скорее всего, вы установите целое число, когда вы должны использовать intval в '$ _POST' целых чисел –