Я новичок в PHP и борется с динамической таблицей html. У меня работает таблица, и я смог принять эти значения и вставить их в таблицу на моем Mysql DB. Однако, честно говоря, я смущен тем, почему у меня есть работы и почему я не могу использовать метод «bindValue» для работы?PDO Вставить в значения базы данных из динамической таблицы html
Может кто-нибудь объяснить, почему метод bindValue не работает? Вот код, который у меня есть. Если вы увидите что-то, что может быть улучшено, я буду рад услышать ваши мысли.
<!-- This is from my HTML file -->
<script language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name="chkbox[]";
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
cell2.innerHTML = "<input type='text' name='itemdesc[]' >";
var cell3 = row.insertCell(2);
cell3.innerHTML = "<input type='number' name='unitprice[]' >";
var cell4 = row.insertCell(3);
cell4.innerHTML = "<input type='number' name='quantity[]' >";
var cell4 = row.insertCell(4);
cell4.innerHTML = "<input type='number' name='linetotal[]' >";
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
table.deleteRow(i);
rowCount--;
i--;
}
}
}catch(e) {
alert(e);
}
}
Это из моего .php файла
for($i=0; $i < count($_POST['itemdesc']); $i++)
{
try
{
$sql = "INSERT INTO invoicelineitem SET
invoiceid = " . $last_id .",
itemdesc = '" . $_POST['itemdesc'][$i] ."',
unitprice = " . $_POST['unitprice'][$i].",
quantity = " . $_POST['quantity'][$i].",
linetotal = " . $_POST['linetotal'][$i];
$s = $pdo->prepare($sql);
$s->execute();
/* I can't get this to work
$sql = 'INSERT INTO invoicelineitem SET
invoiceid = :invoiceid,
itemdesc = :itemdesc,
unitprice = :unitprice,
quantity = :quantity,
linetotal = :linetotal';
$s = $pdo->prepare($sql);
$s->bindValue(':invoiceid', $last_id);
$s->bindValue(':quantity', $_POST['quantity'][$i]);
$s->bindValue(':untiprice', $_POST['unitprice'][$i]);
$s->bindValue(':itemdesc', $_POST['itemdesc'][$i]);
$s->bindValue(':linetotal', $_POST['linetotal'][$i]);
$s->execute();
*/
Это сообщение об ошибке я получаю:
исключение 'PDOException' с сообщением «SQLSTATE [HY093]: Invalid номер параметра : параметр не был определен 'в /media/sf_mcpi/mcpi/invoice/index.php:216 Трассировка стека: # 0 /media/sf_mcpi/mcpi/invoice/index.php(216): PDOStatement-> execute() # 1 {main}
Является ли это опечатка ': UnitPrice, d' <=' d' и цитата в 'linetotal'' <= Использование исключений поймало бы эти ошибки. 'setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION)' –
Вы, кажется, смешиваете PHP и JavaScript, и это не сработает. –
@JayBlanchard Хорошая добыча ;-) Я не видел этого, пока вы не упомянули об этом. –