С помощью python я пытаюсь отладить этот PHP код (который находится внутри множества другого кода, который загромождает вопрос)
$sql = rtrim("INSERT INTO someTable (foo, bar, id) VALUES " . str_repeat("(?, ?, $id)," , count($contents)), ',');
$stmt = $dbh->prepare($sql);
foreach ($contents as $i => $line) {
$stmt->bindParam(2*$i+1, $line['foo'], PDO::PARAM_STR);
$stmt->bindParam(2*$i+2, $line['bar'], PDO::PARAM_STR);
echo $line['dutch'] . '->' . $line['english'] . '\n';
if (!$stmt->execute()) {
$dbh->rollBack();
return false;
}
}
$dbh->commit();
return true;
для этой отладки я сделал этот фрагмент кода
import requests
s = requests.Session()
content = [
{'foo': 'f', 'bar': 'b'},
{'foo': 'o', 'bar': 'a'},
{'foo': 'o', 'bar': 'r'}
]
s.post("http://localhost:8000", data={'content': content})
Который не смог добавить данные в мою базу данных
Итак, я попробовал небольшую отладку
print_r($_POST)
, которая вернула
Array
(
[someOtherVariables] => otherValues
[content] => foo
)
Я ожидал, что контент будет содержать массив объектов, но каким-то образом он содержит только имя первого индекса. Кто-нибудь знает, почему этот код python не отправляет полный список и как я могу изменить свой код, чтобы он работал?
Я также пробовал отправлять данные с json вместо переменной данных s.post("http://localhost:8000", json={'content': content})
, но это, похоже, не решает мою проблему.