Я пытаюсь получить 2 столбцов из моей базы данных со следующим утверждением: приготовленногоPHP Mysqli выбор несколько столбцов, возвращающегося нуль
$statement = $conn->prepare("SELECT script, work_instruction FROM ".$table." WHERE category='".$category."' AND sub_category='".$sub_category."' AND issue='".$issue."'");
Всякий раз, когда я использую этот запрос, PHP возвращает null
к моей странице, даже хотя данные присутствуют в БД. Однако следующее утверждение делает работу (то же самое для work_instruction):
$statement = $conn->prepare("SELECT script FROM ".$table." WHERE category='".$category."' AND sub_category='".$sub_category."' AND issue='".$issue."'");
После того, как я готовлю заявление я выполнить и цикл по моим результатам, перед их возвращением. Я думаю, что проблема может лежать здесь, но я не уверен.
$statement->execute();
$statement->bind_result($results);
while($statement->fetch()){
array_push($myArr, $results);
}
$statement->free_result();
echo json_encode($myArr);
Вот пример того, что моя таблица выглядит следующим образом:
Вот целая функция, только в случае, если вам нужно, чтобы увидеть больше:
// Responsible for generating queries to the database
// and returning the data collected
function query($conn, $column) {
$myArr = array();
$table = $_POST['table'];
$category = $_POST['category'];
$sub_category = $_POST['sub_category'];
$issue = $_POST['issue'];
switch ($column) {
case 'category':
$statement = $conn->prepare("SELECT DISTINCT category FROM ".$table);
break;
case 'sub_category':
$statement = $conn->prepare("SELECT DISTINCT sub_category FROM ".$table." WHERE category='".$category."'");
break;
case 'issue':
$statement = $conn->prepare("SELECT DISTINCT issue FROM ".$table." WHERE category='".$category."' AND sub_category='".$sub_category."'");
break;
//This does not work
case 'script':
$statement = $conn->prepare("SELECT script, work_instruction FROM ".$table." WHERE category='".$category."' AND sub_category='".$sub_category."' AND issue='".$issue."'");
break;
//This does work
case 'work_instruction':
$statement = $conn->prepare("SELECT work_instruction FROM ".$table." WHERE category='".$category."' AND sub_category='".$sub_category."' AND issue='".$issue."'");
break;
case 'doc_link':
//$statement = $conn->prepare($query);
break;
default:
break;
}
$statement->execute();
$statement->bind_result($results);
while($statement->fetch()){
array_push($myArr, $results);
}
$statement->free_result();
echo json_encode($myArr);
}
Спасибо за отличный пост. Я пытаюсь внести эти изменения в свой код, пока не повезло :) Вот пример вашего скрипача, который соответствует моей схеме: http://sqlfiddle.com/#!9/0c4b3/1/0 Я также обновил мой пост с IMG моей таблицы. –
Когда я запускаю ваш код, я получаю код ответа «500», который возникает при вызове функции «get_results()». Любые идеи почему? –
Хорошо, с некоторой незначительной настройкой мне удалось получить этот сниппет! Спасибо за внимание и за отличный ответ. По какой-то причине функция get_result() не работала. Я закончил использование bind_result() вместо –