MySQL неправильно использует PHP переменные в запросах, замена переменных строками / целыми числами работает нормально - PullRequest
0 голосов
/ 30 мая 2020

MySQL не использует переменные должным образом. он не берет от них никакого значения, он увеличивает числа автоинкремента в таблице MYSQL, однако строка не сохраняется. Мне не выдали никаких ошибок.

Я пробовал вот так:

$sql = "INSERT INTO `tbl_bike` (`userID`, `ManuPartNo`, `BikeManufacturer`, `BikeModel`, `BikeType`, `BikeWheel`, `BikeColour`, `BikeSpeed`, `BrakeType`, `FrameGender`, `AgeGroup`, `DistFeatures`) 
VALUES (“.$userID.”, “.$PartNo.”, “.$BikeManufacturer.”, “.$BikeModel.”, “.$BikeType.”, “.$BikeWheel.”, “.$BikeColour.”, “.$BikeSpeed.”, “.$BrakeType.”, “.$FrameGender.”, “.$AgeGroup.”, “.$DistFeatures.”)";

Я также пробовал заменить "на", удалить. И даже полностью удалить ". Ничего не помогло с этой проблемой. Когда я использую этот запрос, но удаляю переменные и вместо этого помещаю строку int et c в нужные места, запрос будет работать безупречно и поместить результаты в таблицу. Мои переменные обычно следующие:

$PartNo =  $_POST['ManuPartNo’];

$BikeManufacturer =  $_POST['BikeManufacturer’]; 

$BikeModel =  $_POST['BikeModel’]; 

$BikeType =  $_POST['BikeType’]; 

$BikeWheel =  $_POST['BikeWheel’]; 

$BikeColour =  $_POST['BikeColour’]; 

$BikeSpeed =  $_POST['BikeSpeed’]; 

$BrakeType =  $_POST['BrakeType’]; 

$FrameGender =  $_POST['FrameGender’]; 

$AgeGroup =  $_POST['AgeGroup’]; 

$DistFeatures =  $_POST['DistFeatures’]; 


Эти переменные обычно принимают входные данные из отдельного файла PHP / HTML с '$_POST['DistFeatures’];'

Я попытался удалить $_POST['DistFeatures’]; из концы каждого из них и просто заменяя значения обычными значениями string или int, но все равно ничего не помогает. Я полностью застрял и был бы признателен за любую помощь с этим.

Все это работает на сервере plesk.

Ответы [ 2 ]

3 голосов
/ 30 мая 2020

Пожалуйста, прекратите использование устаревшего MySQL. Я предложу ответ с помощью PDO. Вы можете использовать это для создания других запросов с помощью PDO.

// Establish a connection in db.php (or your connection file)
$dbname = "dbname"; // your database name
$username = "root"; // your database username
$password = ""; // your database password or leave blank if none
$dbhost = "localhost";
$dbport = "10832";

$dsn = "mysql:dbname=$dbname;host=$dbhost";
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

// Include db.php on every page where queries are executed and perform queries the following way

// Take Inputs this way (your method is obsolete and will return "Undefined Index" error)

$userId = (!empty($_SESSION['sessionname']))?$_SESSION['sessionname']:null; // If session is empty it will be set to Null else the session value will be set
$PartNo = (!empty($_POST['ManuPartNo']))?$_POST['ManuPartNo']:null; // If post value is empty it will be set to Null else the posted value will be set
$BikeManufacturer = (!empty($_POST['BikeManufacturer']))?$_POST['BikeManufacturer']:null;
$BikeModel = (!empty($_POST['BikeModel']))?$_POST['BikeModel']:null;
$BikeType = (!empty($_POST['BikeType']))?$_POST['BikeType']:null;
$BikeWheel = (!empty($_POST['BikeWheel']))?$_POST['BikeWheel']:null;

// Query like this
$stmt = $pdo->prepare("INSERT INTO(`userID`, `ManuPartNo`, `BikeManufacturer`, `BikeModel`, `BikeType`)VALUES(:uid, :manuptno, :bkman, :bkmodel, :bktype)");
$stmt-> bindValue(':uid', $userId);
$stmt-> bindValue(':manuptno', $PartNo);
$stmt-> bindValue(':bkman', $BikeManufacturer);
$stmt-> bindValue(':bkmodel', $BikeModel);
$stmt-> bindValue(':bktype', $BikeType);
$stmt-> execute();

if($stmt){
    echo "Row inserted";
}else{
    echo "Error!";
}

Видите, это так просто. С этого момента используйте PDO. Это более безопасно. Чтобы попробовать это, просто скопируйте весь код в пустой файл PHP и запустите его. Ваша база данных получит запись. Не забудьте изменить здесь значения базы данных.

0 голосов
/ 30 мая 2020

Вы должны попробовать это

$sql = "INSERT INTO tbl_bike (userID, ManuPartNo, BikeManufacturer, BikeModel, BikeType, BikeWheel, BikeColour, BikeSpeed, BrakeType, FrameGender, AgeGroup, DistFeatures) VALUES ('$userID', '$PartNo', '$BikeManufacturer', '$BikeModel', '$BikeType', '$BikeWheel', '$BikeColour', '$BikeSpeed', '$BrakeType', '$FrameGender', '$AgeGroup', '$DistFeatures')";

Если это не сработает, включите свойство null в значениях sql. Так вы сможете узнать, где возникла ошибка.

...