Просто: передача PHP var в SQL завершается ошибкой запроса MySqli

0

После прочтения stackoverflow в течение нескольких часов и попыток различных предложений, я не могу получить простой оператор sql для работы.

Я использую последний XAMPP localhost с Apache для PHP и MySQL.

-------------------Таблица---------------

id | имя | сделка |

1 | Дэвид | 1234В |

В PhpMyAdmin следующая переменная sql возвращает 1 строку. Однако переменная sql возвращает нефункциональный ресурс.

Я пробовал различные повторные компоновки оператора sql и синтаксиса для $mysqli-> query();

Я что-то пропустил в php.ini или что-то в этом роде?

$text = "here we have a long string of text with transaction ID: 1234V and some other stuff mixed in here.";

//lets cutup the string and only extract the transaction id
$array = explode("transaction ID: ", $text);

if (isset($array[1]))
    $array = explode("and", $array[1]);

$variable = $array[0]; //$array[0] = '1234V ';
$trans = "SELECT * FROM 'name' WHERE 'transaction' = '$variable';";

if($statement = $mysqli->prepare("$trans")){
    $statement->execute();
    $statement->bind_result($id,$name,$transaction);

    while ($statement->fetch()) {
        printf("%s %s\n",$id,$name,$transaction);
    }

    $statement->close();
}
$mysqli->close();
die();

Этот новый код с переменной $ напечатал это:

$trans = "SELECT * FROM 'name' WHERE 'transaction' = '$variable';";
mysqli_result 

Object ( [current_field] => 0 [field_count] => 3 [lengths] => [num_rows] => 0 [type] => 0 )

и новый код с жестким кодом напечатал это:

$trans = "SELECT * FROM 'name' WHERE 'transaction' = '1234V ';";
mysqli_result

Object ( [current_field] => 0 [field_count] => 3 [lengths] => [num_rows] => 1 [type] => 0 )
  • 0
    В конце 1234V должно быть место?
  • 1
    И есть ли пропущенное закрытие} для if ($mysqli->connect_error) { ?
Показать ещё 10 комментариев
Теги:

2 ответа

0
$trans = "SELECT id, name, transaction FROM 'name' WHERE 'transaction' = ? ;";

if($statement = $mysqli->prepare($trans)){
    echo 'Let\ check we are in? '.$passed['variable']."\n";
    $statement->bind_param("s", $passed['variable']);

    $statement->execute();
    $statement->bind_result($id, $name, $transaction);

    while ($statement->fetch()) {
        printf("FETCHED: %s %s %s\n", $id, $name, $transaction);
    }
    echo "Let check we are out? \n";
    $statement->close();
} else {
    echo $mysqli->error;
}
$mysqli->close();
  • 0
    Я попробовал это секунду назад. Он не говорит об ошибке, однако mysqli не получает ресурс.
  • 0
    вероятно, у вас просто нет данных для этой транзакции! :-)
Показать ещё 7 комментариев
0

Не могли бы вы попробовать что-то вроде этого:

$trans = "SELECT * FROM 'name' WHERE 'transaction' = ?";

Кроме того, я думаю, вы должны попробовать:

$statement = $mysqli->prepare($trans);
$statement->bind_param("s", $passed[variable]);
$statement->execute();
if(...
  • 0
    Пробовал это, те же пустые результаты и без ошибок.
  • 0
    Ох ... Я думаю, что вы должны связать. Я отредактирую ответ!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню