php - 连接失败:SQLSTATE [HY000]:一般错误:1366 整数值不正确
问题描述
基本上我试图从一个 url 获取一个 ID 并将其插入数据库,最初我有一个未定义的变量错误,所以我环顾四周,我看到一些线程建议$id = '';
删除这个问题,我可以确定它确实,但是我注意到它没有插入到我的数据库中,所以我将它包装在 atry
中,看看它是否给了我一个错误,它确实给了我一个错误,完整的错误是
Connection failed: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'reviewId' at row 1
我的代码
require ("classes/Stats.php");
require ("classes/Database.php");
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$id = '';
$socValidation = new Stats();
if(isset($_GET['id']) && $_GET['id'] !== '')
{
$id = $_GET['id'];
}
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
$userId = $_SESSION["userId"];
$messages = $post['addComment'];
$errors = array();
$fields = array(
'messages' => array(
'validate' => 'socMessage',
'message' => 'Please enter a minimum of three characters',
'value' => $messages
)
);
foreach($fields as $key => $value)
{
$validation_result = $socValidation->{$value['validate']}($value['value']);
if(!$validation_result)
{
$errors[] = ['name' => $key, 'error' => $value['message']];
}
}
if(empty($errors))
{
try
{
$db = new Database();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$success = ["response" => "Your notes have been saved"];
$process = $db->prepare('INSERT INTO reviewReplies (reviewComment, reviewId, userId, dateAdd) VALUES (:addComment, :id, :userId, NOW())');
$process->bindValue(':addComment', $messages);
$process->bindValue(':id', $id);
$process->bindValue(':userId', $userId);
$process->execute();
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
}
header('Content-Type: application/json');
if (empty($errors))
{
echo json_encode($success);
}
else
{
echo json_encode(["errors" => $errors]);
}
解决方案
默认情况下,它bindValue()
假定一个字符串数据类型。如果你想使用类似 INT 的东西,你需要将它添加到调用中。
$process->bindValue(':id', $id, PDO::PARAM_INT);
:userId
如果那也是 INT,您可能还需要这样做
$process->bindValue(':userId', $userId, PDO::PARAM_INT);
您还应该检查
$id
and$userId
变量是否包含一个值并且它是一个整数我还注意到您在一个
if ($_SERVER['REQUEST_METHOD'] == 'POST')
块内,但是正在使用将您的默认设置为空字符串的行获取您的$id
from ?这也可能是您问题的一部分!$_GET['id']
$id
$id = '';
推荐阅读
- javascript - Laravel - 如何在 Javascript 中使用控制器的返回值?
- javascript - 从角度的多选下拉列表中选择值
- cgal - 为什么我在编译时收到 BOOST_PARAMETER_MAX_ARITY 重新定义的警告?
- php - 分页中缺少 $ _GET
- c - 数组不连续元素的最大和
- amazon-s3 - nativescript 图像上传到 s3 编码问题
- python - Scrapy/Python 产量和继续处理可能吗?
- xamarin.ios - Xamarin.ios 实现导航抽屉
- google-sheets - 问题附加对象顶部 Google 表格
- c - 在 C 中实现具有邻接表的图