Я пытаюсь получить следующий скрипт для отправки представленных данных в мою базу данных. Кажется, я терплю неудачу и получаю сообщение от mysqli_error, говорящего, что мой синтаксис sql неверен. Тем не менее, я следую синтаксису, как указано в моей книге.Почему этот mysql-запрос не успешно вставлен в мой db?
Если установлено [Сохранить], это означает, что форма была отправлена. Я попробовал добавить backticks вокруг моих имен столбцов, как было предложено в другом месте в stackoverflow, но безрезультатно.
Вот ошибки я получаю:
«У Вас есть ошибка в вашем SQL синтаксиса, проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильного синтаксиса использовать вблизи«[(` person`, `age`)] VALUES ({$ person, $ age}) 'в строке 1"
Предупреждение: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ wamp \ www \ contacthmw3 \ index.php в строке 33
Call Stack # Time Memory Function Location 1 0.0024 148104 {main}() ..\index.php:0 2 0.0163 157640 mysqli_fetch_array () ..\index.php:33
<?php
include_once 'magicquotes.php';
include_once 'db.inc.php'; // connects, sets chars, selects db
include_once 'form.php'; // just saves form to $form
$sqlselect = 'SELECT person, age FROM people;
SELECT email, phone FROM contacts;';
if (!isset($_GET['save'])) {
echo $form;
} else {
$person = $_GET['person'];
$age = $_GET['age'];
$email = $_GET['email'];
$phone = $_GET['phone'];
$sqlsave = 'INSERT INTO people (`person`, `age`) VALUES ($person, $age);';
$savedtodb = mysqli_query($link, $sqlsave);
if (!$savedtodb)
{echo 'Failed to save to db' . mysqli_error($link);}
// send form submission to db with sanitized data
}
$contacts = mysqli_query($link, $sqlselect); //retrieve data into $contacts array
if (!$contacts) {
echo 'Failed to get contacts from db.' . mysqli_error($link);
}
while ($row = mysqli_fetch_array($contacts)) {
$showme[] = array('person' => $row['person'], 'age' => $row['age']);
foreach ($showme as $indiv => $age) {
echo $indiv . $age;
}
}
?>
<?php
if (isset($_GET['save'])):
?>
<p>Last details entered into the table:</p>
<table border="1">
<tr> <th>Person</th><th>Age</th><th>Email</th><th>Phone</th></tr>
<tr>
<td> <?php echo $_GET['person']; ?></td>
<td> <?php echo $_GET['age']; ?></td>
<td> <?php echo $_GET['email']; ?></td>
<td> <?php echo $_GET['phone']; ?></td>
</tr>
</table>
<?php
endif;
?>
Это не тот запрос, который вам рассказала книга. –
Используйте [bind variables] (http://us.php.net/manual/en/mysqli.quickstart.prepared-statements.php) вместо того, чтобы вставлять в запрос неэкранированный и некорректированный ввод. – DCoder
Вы не инициализировали $ link – Sebas