это мой первый раз, используя Mysqli, и я застрял на этой проблеме около часа. Я получаю эту ошибкуsqli error with подготовить заявление
mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters
in prepared statement in C:\wamp\www\WebContent\success.php on line 30
я насчитал как 10 раз больше вопросительных знаков в подготовке заявления и есть 21, то я подсчитал s- и переменные в bind_param и есть 21 тоже. Я новичок в Mysqli, мне было интересно, если я могу получить какие-либо предложения о том, как ПОДХОД и отлаживать эту проблему, спасибо за вашу помощь
<?php
$mysqli = new mysqli("localhost", "root","","test");
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$i=0;
if ($stmt = $mysqli->prepare("UPDATE `table` SET `Lan_ID` = '?', `Switching` = '?',
`Own` = '?',`Division` = '?',`Switch_Number` = '?',
`Telecom_Circuit_number` = '?', `Transmitter_Frequency` = '?',
`Receiver_Frequency` = '?', `Band_width` = '?', `Channel` = '?',
`Equipment` = '?', `Power` = '?',
`Line_designation` = '?', `Voltage` = '?', `Phase` = '?',
`Modulate` = '?', `Terms` = '?', `Trap` = '?',
`Ltunner` = '?', `Link` = '?',
`Comment` = '?' ". $_GET['where'.$i]))
{
$stmt->bind_param('sssssssssssssssssssss', $_GET[$i.'LanID'],$_GET[$i.'Switching'],
$_GET[$i.'Own'], $_GET[$i.'Division'], $_GET[$i.'Switch_Number'], $_GET[$i.'Telecom_Circuit_number'],
$_GET[$i.'Trasmitter_frq'], $_GET[$i.'Receiver_frq'], $_GET[$i.'Band_width'], $_GET[$i.'Channel'],
$_GET[$i.'Equipment'], $_GET[$i.'Power'], $_GET[$i.'Line_designation'],$_GET[$i.'Voltage'],
$_GET[$i.'Phase'],$_GET[$i.'Modulate'],$_GET[$i.'Terms'], $_GET[$i.'Trap'],$_GET[$i.'Ltunner'],
$_GET[$i.'Link'], $_GET[$i.'Comment']);//this is line 30 btw
}
else
{
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
$stmt->close();
?>
'$ _GET ['где'. $ I]' пахнет как sql injection .. – bitWorking
@redreggae $ _GET ['where'. $ I] - это предложение where, в котором вся информация, переданная с последней страницы, упорядочена чтобы обновить определенный столбец, все они являются выпадающим вариантом, поэтому я не думаю, что это может произойти, исправьте меня, если я ошибаюсь, хотя, потому что я новичок в этой теме :) – user2585242
да, вы ошибаетесь .. вы не можете доверять '$ _GET', '$ _POST' и' $ _COOKIE' (среди прочих). Все это легко манипулировать. Попробуйте [this] (https://addons.mozilla.org/de/firefox/addon/tamper-data/) или [это] (https://addons.mozilla.org/de/firefox/addon/poster /). – bitWorking